加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

docker run vs create start:为什么创建的容器不同?

发布时间:2020-12-16 03:49:19 所属栏目:安全 来源:网络整理
导读:相关 docker container started in Detached mode stopped after process execution https://serverfault.com/questions/661909/the-right-way-to-keep-docker-container-started-when-it-used-for-periodic-tasks 我确实理解了docker run和create start之间

相关

docker container started in Detached mode stopped after process execution

https://serverfault.com/questions/661909/the-right-way-to-keep-docker-container-started-when-it-used-for-periodic-tasks

我确实理解了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

然后它会立即退出.为什么bash没有开始,或者在这种情况下它是如何退出的?

最佳答案
作为shell的容器进程(如debian示例中的bash)的区别在于,在没有执行任何操作的情况下,shell在没有终端交互式“模式”的情况下启动.

您可以通过将create’d容器的命令更改为不需要终端的内容来测试:

$docker create –name thedate debian date

现在,如果我运行日期容器,每次运行它时都会输出日期(在日志中)并退出. docker log thedate将显示此信息;每次运行一个条目.

显而易见,您的docker run命令具有标志-dit:detached,interactive(connect STDIN)和tty都已启用.

如果你想用create& amp;开始,然后你需要为创建的容器分配一个tty:

$docker create -it –name ashell debian

现在,如果我启动它,我要求附加/交互式它,我得到与运行相同的行为:

$docker start -ai ashell
根@ 6e44e2ae8817:/#

注意:[2018年1月25日]编辑在创建时添加-i标志作为评论者注意到最初编写的这不起作用,因为容器元数据在创建阶段没有连接stdin

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读