相关
在流程执行后停止的Detached模式中启动的docker容器
我确实理解了docker run
和create
+ 之间的区别start
,但是不明白这两种方式创建的实际容器有何不同.
说我带着一个容器运行
docker run -dit debian:testing-slim
Run Code Online (Sandbox Code Playgroud)
然后停下来 稍后可以使用创建的容器启动
docker start silly_docker_name
Run Code Online (Sandbox Code Playgroud)
并且它将在后台运行,因为图像的入口命令是bash.
但是,首次创建容器时
docker create --name silly_name debian:testing-slim
Run Code Online (Sandbox Code Playgroud)
然后开始
docker start silly_name
Run Code Online (Sandbox Code Playgroud)
然后它会立即退出.为什么bash没有开始,或者在这种情况下它是如何退出的?
作为 shell 的容器进程(如您的 debian 示例)的区别在于bash
,在没有终端+交互式“模式”的情况下启动的 shell 退出时不执行任何操作。
您可以通过将 'd 容器的命令更改create
为不需要终端的命令来测试这一点:
$ docker create --name thedate debian date
现在,如果我运行thedate
容器,每次运行它时都会输出日期(在日志中)并退出。docker logs thedate
将显示这一点;每次运行一个条目。
明确地说,您的docker run
命令具有标志-dit
:分离、交互式(连接 STDIN)和t ty 均已启用。
如果您想要使用创建和启动类似的方法,那么您需要tty
为创建的容器分配 a :
$ docker create -it --name ashell debian
现在,如果我启动它,我会要求以交互方式附加/交互到它,并且我会得到与运行相同的行为:
$ docker start -ai ashell
root@6e44e2ae8817:/#
注意: [2018 年 1 月 25 日] 编辑添加-i
标志create
作为评论者指出,正如最初编写的那样,这不起作用,因为容器元数据在创建阶段没有连接标准输入
归档时间: |
|
查看次数: |
1882 次 |
最近记录: |