為什麼有些容器在docker run的時候需要接 -it ,有些不需要?

這是我們的Dockerfile文件

FROM busybox
ENV sg WANG
CMD ["/bin/sh", "-c", "echo wangwenlong;sleep 120;echo ok"]

創建一個基於base鏡像busybox的鏡像

[root@localhost busybox]# docker build -t busybox .

創建並運行一個容器

[root@localhost busybox]# docker run -d --name w-busybox busybox

查看該容器是否運行

[root@localhost busybox]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED             STATUS             PORTS                               NAMES
596f2753e6b5   busybox        "/bin/sh -c 'echo wa…"   2 seconds ago       Up 1 second                                            w-busybox

查看該容器中運行的進程

[root@localhost busybox]# docker top w-busybox
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                10382               10363               1                   18:09               ?                   00:00:00            /bin/sh -c echo wangwenlong;sleep 120;echo ok
root                10412               10382               0                   18:09               ?                   00:00:00            sleep 120

120秒後

查看該容器

[root@localhost busybox]# docker top w-busybox
Error response from daemon: Container 596f2753e6b500ce05638995af11c8aae6151615f9a70c2fbbbc79a43c47c3f6 is not running

以上內容都說明了如果build一個鏡像時使用

CMD ["解釋器"]

我們要使用以下進行創建運行容器

[root@localhost busybox]# docker run -it

該容器可以運行起來而不會退出

而使用

[root@localhost busybox]# docker run

會發現該容器只是創建成功但是不能運行

Tags: