每当我在Mac上启动Docker时,都有四个容器可以自动启动。
$ docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
//starts docker, makes tea
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d78483fa7f27 magento/magento2devbox-web:latest "/usr/local/bin/en..." 4 weeks ago Up 5 minutes 5000/tcp, 9000/tcp, 44100/tcp, 0.0.0.0:32774->22/tcp, 0.0.0.0:32773->80/tcp magento2devbox_web_03b003abaeb68eadd315c2e4763d0326
01f62a720e40 mysql:5.6 "docker-entrypoint..." 4 weeks ago Up 5 minutes 0.0.0.0:32772->3306/tcp magento2devbox_db_03b003abaeb68eadd315c2e4763d0326
005e0708d8f7 magento/magento2devbox-web:latest "/usr/local/bin/en..." 6 months ago Up 5 minutes 5000/tcp, 9000/tcp, 44100/tcp, 0.0.0.0:32770->22/tcp, 0.0.0.0:32769->80/tcp magento2devbox_web_258e08743d8e54a4b3e6acfd3b2d7159
00b38cf0fdb9 mysql:5.6 "docker-entrypoint..." 6 months ago Up 5 minutes 0.0.0.0:32768->3306/tcp magento2devbox_db_258e08743d8e54a4b3e6acfd3b2d715
我如何判断(Docker?容器?)我不再需要这四个容器自动启动了?
答案 0 :(得分:2)
使用docker inspect NAME|ID
检查这些容器的重新启动策略。
如果它是always
或on-failure
,那么您有解释。
要更改重启策略,请使用docker update --restart <new policy>
。
这两个命令将所有正在运行的容器的重启策略设置为no
,然后将其全部杀死(确保在执行此操作之前了解此内容):
docker update `docker ps -q` --restart no
docker kill `docker ps -q`
然后,重新启动docker守护程序,您应该不会从docker ps
中看到任何内容。
答案 1 :(得分:1)
使用docker stop [container_id]
停止每个正在运行的容器。它们不应该在您下次重新启动docker守护程序时重新启动。
将来,当您启动容器时,请确保在致电docker run
时,您没有传递--restart
标志。如果你正在使用docker compose,请务必省略“重启”。您的docker-compose.yml文件中的选项。
来自文档:
要为容器配置重新启动策略,请在使用docker run命令时使用--restart标志。 --restart标志的值可以是以下任何一种:
否 - 不要自动重启容器。 (默认)
on-failure - 如果容器由于错误而退出,则重新启动容器,该错误显示为非零退出代码。
除非 - 停止 - 重新启动容器,除非它被明确停止或Docker本身被停止或重新启动。
始终 - 如果容器停止,请始终重启容器。
以下示例启动Redis容器并将其配置为始终重新启动,除非明确停止或重新启动Docker。
$ docker run -dit --restart unless-stopped redis
https://docs.docker.com/engine/admin/start-containers-automatically/#use-a-restart-policy