docker-compose 在主机重启后启动容器。哪个?
Posted
技术标签:
【中文标题】docker-compose 在主机重启后启动容器。哪个?【英文标题】:docker-compose is starting containers after host reboot. Which ones? 【发布时间】:2019-12-21 12:27:43 【问题描述】:我是docker-compose
的新手。以前,当我手动启动容器时,在主机重新启动后,我必须手动启动容器。
今天我发现 - 在主机重新启动后 - 我有 4 个容器正在运行。这些之前都是以docker-compose
开头的。
但是docker-compose
不能很好地工作,除非你在带有docker-compose.yml
的正确目录中。
问题
我怎么知道docker-compose.yml
或(哪个路径)用于启动我发现在重新启动后登录后已经启动的 docker 容器?
我试过了
docker inspect xxxxx
但我找不到任何关于 docker-compose.yml
用于启动的线索。
【问题讨论】:
您是否在撰写文件中设置了restart 或使用docker inspect $container
来查看是否为这些自动启动容器设置了任何重启?
【参考方案1】:
docker-compose
没有启动任何东西。
Docker 守护程序正在启动您已设置重启策略的容器(可能在您的 docker-compose.yaml
文件之一中)。如果不再需要这些容器 (docker container rm ...
),您可以简单地删除它们,或者您可以使用 docker container update --restart=no <image_name_or_id>
重置重启策略。
您可以阅读更多关于重启政策here。
但是 docker-compose 不能很好地工作,除非你在 docker-compose.yml 的正确目录中。
由于 docker-compose 在这个阶段不参与(它可能负责创建容器但它不负责重新启动它们),这不是问题。通过docker-compose.yml
对容器设置适当的重启策略是使容器在启动时启动的正确方法。
您可以在使用docker run
启动容器时设置重启策略,方法是在命令行中包含适当的--restart=<policy>
选项。
【讨论】:
啊,我明白了,只是为了确认一下:我也可以使用docker
手动启动一个容器,与docker-compose
无关,并设置一个“重启策略”以确保容器再次启动重新启动时。与compose
无关,但与dockerd
本身无关。这是真的吗?
正确。您可以在使用docker run --restart=<policy> ...
启动容器时设置重启策略。
啊,亲眼所见!我将接受答案作为“答案”,为了改进它,我建议您对其进行编辑以将您的最后一条评论包含在答案本身中。以上是关于docker-compose 在主机重启后启动容器。哪个?的主要内容,如果未能解决你的问题,请参考以下文章
docker-compose 等待启动,直到挂载主机文件系统