退出后如何重新进入dockercontainer提示

时间:2018-10-25 02:48:30

标签: linux docker unix

我在this procedure之后运行docker:

~/tt$ cd correct_so/
~/tt/correct_so$ ls
caculate.c  caculate.h  libcac.so
~/tt/correct_so$ gcc -shared -fPIC caculate.c -o libcac.so
~/tt/correct_so$ cd ..
~/tt$ cd wrong_so/
~/tt/wrong_so$ gcc -shared -fPIC caculate.c -o libcac.so
~/tt/wrong_so$ cd ..
~/tt$ gcc main.c -o main -I correct_so -L correct_so -lcac
~/tt$ ldd main
        linux-vdso.so.1 =>  (0x00007fffd3dfe000)
        libcac.so => correct_so/libcac.so (0x00007f1a70b7c000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1a7079f000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f1a70d80000)
~/tt$ export LD_LIBRARY_PATH=wrong_so && ./main
1 + 2 = 6
1 + 2 = 6
1 + 2 = 6
^Z
[1]+  Stopped                 ./main
~/tt$ ldd main
        linux-vdso.so.1 =>  (0x00007fff1abd9000)
        libcac.so => wrong_so/libcac.so (0x00007fdb5523c000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fdb54e5f000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fdb55440000)
~/tt$ export LD_LIBRARY_PATH=correct_so
~/tt$ ldd main
        linux-vdso.so.1 =>  (0x00007fffa11fe000)
        libcac.so => correct_so/libcac.so (0x00007ffeda6b6000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f82f80bc000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f82f849b000)
~/tt$ fg
./main
1 + 2 = 6
^C

在最后一步,它会创建一个根提示符 $ sudo service docker start $ docker pull epgg/eg $ docker run -p 8081:80 --name eg -it epgg/eg bash root@35f54d7d290f:~#

root@35f54d7d290f:~#

泊坞窗进程结束,容器内的Apache已死。 如何安全退出容器,如何重新进入码头工人 容器提示回来。

2 个答案:

答案 0 :(得分:1)

运行以下命令时,它将执行2次操作。

$ docker run -p 8081:80 --name eg -it epgg/eg bash
  • 它将创建一个名为例如
  • 的容器
  • 它只有一个用途/过程 bash ,您已使用cmd参数对其进行了覆盖。
    • 这意味着当bash shell结束/完成/ 退出时,容器没有运行目标,因此您的docker容器也将进入 stopped 阶段。

理想情况下,您应该创建一个容器来运行apache-server作为主进程(默认为入口点或cmd)。

$ docker run -p 8081:80 --name eg -d epgg/eg

然后使用以下命令可以在正在运行的容器中输入

$ docker exec -it eg bash

此处的容器名称例如 (请注意,由于您已经有一个名为“ eg”的容器,您可能需要先将其删除)

$ docker rm -f eg

答案 1 :(得分:1)

由于任何容器的目的都是启动/运行任何进程,因此该进程完成后,容器将停止/退出。因此,要继续在后台运行容器,容器中必须有一个活动进程。

  1. 您可以在运行容器以进行分离时使用 -d 速记 从终端这样的容器:

    docker run -d -it --name {container_name} {image}:{tag}
    

    但这并不保证可以在 背景,因此即使在这种情况下,容器也会在 过程结束了。

  2. 要在后台主动运行apache服务器,您需要使用 启动容器时 -DFOREGROUND 标志:

    /usr/sbin/httpd -DFOREGROUND     (for centOS/RHEL) 
    

    这将在后台运行您的apache服务。

  3. 在其他情况下,使您的服务以分离模式运行 只需传递/bin/bash命令,这将保持bash 外壳在后台处于活动状态。

    docker run -d -it --name {container_name} {image}:{tag} /bin/bash
    

无论如何,要退出正在运行的容器而不退出容器和进程,只需按: Ctrl + P + Q

要将容器再次连接到终端,请使用以下方法:

docker attach {container_name}