与
相关docker container started in Detached mode stopped after process execution
我理解docker run
和create
+ start
之间的区别,但不了解以这两种方式创建的实际容器有何不同。
假设我使用
创建并运行容器docker run -dit debian:testing-slim
然后停止它。稍后可以使用
启动创建的容器docker start silly_docker_name
并且它将在后台运行,因为图像的输入命令是bash。
但是首次创建容器时
docker create --name silly_name debian:testing-slim
然后以
开头docker start silly_name
然后它会立即退出。为什么没有开始,或者在这种情况下它是如何退出的?
答案 0 :(得分:3)
作为shell的容器进程(如你的debian示例中的bash
)的不同之处在于没有执行任何操作而没有终端+交互式“模式”的shell启动。
您可以通过将create
'd容器的命令更改为不需要终端的内容来测试:
$ docker create --name thedate debian date
现在,如果我运行thedate
容器,每次运行它都会输出日期(在日志中)并退出。 docker logs thedate
会显示这一点;每次运行一个条目。
要明确,您的docker run
命令包含标记-dit
: d etached, i nteractive(连接STDIN)和 t ty都已启用。
如果你想用create& amp;开始,然后你需要为创建的容器分配tty
:
$ docker create -it --name ashell debian
现在,如果我启动它,我会要求以交互方式附加到它,并且我得到与运行相同的行为:
$ docker start -ai ashell
root@6e44e2ae8817:/#
注意: [2018年1月25日] 已修改为-i
的{{1}}标记作为评论者注意到最初写这个不起作用,因为容器元数据没有在创建阶段连接stdin