docker 容器为什么会退出?

docker 容器为什么会退出?

是因为 没有一个可以支撑docker 持久运行下去的命令。

验证:

1.与 -d 选项无关
root@z2:~# docker run -it  centos   ls
bin  etc   lib	  lost+found  mnt  proc  run   srv  tmp  var
dev  home  lib64  media       opt  root  sbin  sys  usr

root@z2:~# docker  ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
02edacde079b        centos              "ls"                12 seconds ago      Exited (0) 11 seconds ago                       infallible_kare

发现即使加了 -d 也会退出

root@z2:~# docker run -it  -d  centos   ls
be473276b628964e6ea477f46795582fee49f434afe328cfaa92e8b646780700
root@z2:~# docker  ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
be473276b628        centos              "ls"                29 seconds ago      Exited (0) 29 seconds ago                       zealous_shamir
02edacde079b        centos              "ls"                51 seconds ago      Exited (0) 51 seconds ago                       infallible_kare

2. ctrl +p+q 与 exit

运行 2个容器 ,一个加 -d 一个不加 -d

root@z2:~# docker  rm -fv  `docker ps -a -q`


root@z2:~#  docker run -it  -d  centos  bash
2d17f181589fb4edf55f2022e07f26f4ab5ea21b8cc16e7cf2b842906da68ba5

root@z2:~#  docker   run -it centos  bash

不加 -d 的进程关系

[root@690f43061599 /]# yum  install psmisc

[root@690f43061599 /]# ps -elf 
F S UID         PID   PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 S root          1      0  0  80   0 -  3006 do_wai 03:07 pts/0    00:00:00 bash
0 R root         55      1  0  80   0 - 10990 -      03:09 pts/0    00:00:00 ps -elf

加 -d 的进程关系

root@z2:~# docker   exec -it 2d17f181589f  bash
[root@2d17f181589f /]# yum install psmisc


[root@2d17f181589f /]# ps -elf
F S UID         PID   PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 S root          1      0  0  80   0 -  3006 poll_s 03:07 pts/0    00:00:00 bash
4 S root         14      0  0  80   0 -  3006 do_wai 03:12 pts/1    00:00:00 bash
0 R root         68     14  0  80   0 - 10990 -      03:13 pts/1    00:00:00 ps -elf

此时2个容器都是UP 状态。 若2个容器 都执行exit,则不加-d 的直接退出。 难道是是因为-d 参数的原因吗? 当然不是

​ 是因为使用 docker exec 进入时 又执行了一个bash ,有两个独立的bash 命令在运行,exit 退出一个还有一个在后台运行。而docker run -it centos bash 在前台执行 bash ,若直接exit 则没有一个可以支撑长期运行下去的命令l。 但是此时使用ctrl +p+q 退出容器 不注销 ,相当于退出容器并且放在后台了 ,所以仍然可以运行下去。

同理 这也是attach 进去 ,使用exit 退出 ,容器也会退出的原因。但是ctrl +p +q 退出就不会

root@z2:~#   docker run -it  -d  centos  bash
2d0f647a61ff92bbb309315c538bd764c32a754c609c38710ce6de01396d14f4

root@z2:~# docker attach  2d0f647a61ff 

[root@2d0f647a61ff /]# yum install psmisc


[root@2d0f647a61ff /]# ps -elf
F S UID         PID   PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 S root          1      0  0  80   0 -  3006 do_wai 04:46 pts/0    00:00:00 bash
0 R root         58      1  0  80   0 - 10990 -      04:47 pts/0    00:00:00 ps -elf

[root@2d0f647a61ff /]# exit
exit


root@z2:~# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
2d0f647a61ff        centos              "bash"              6 minutes ago       Exited (0) 13 seconds ago                       jovial_murdock

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读