
[英]Why does one of my Docker containers not start automatically on machine boot?
[英]How to prevent all docker containers from automatically restarting on boot?
我经常在我的笔记本电脑上部署 docker 个容器进行开发,然后关闭我的计算机而忘记关闭 docker 个容器。 令我惊讶的是,多次重启后这些容器仍在运行。
我如何更改此行为,以便任何 docker 容器,无论容器是否附加了重启策略,都不会在下次启动时重新启动?
我正在运行 Linux 和 docker 通过 systemd 运行。
您可以通过创建依赖于 docker 的 oneshot systemd 服务(通过After=
设置顺序)来执行此操作,然后在关闭时运行脚本以停止并删除所有容器。
Systemd 服务(即放在/etc/systemd/system/shutdown-docker-containers.service
中):
[Unit]
Description="Service to prevent restarting docker containers on next bootup"
After=docker.service
[Service]
Type=oneshot
RemainAfterExit=true
ExecStop=/opt/docker-container-shutdown.sh
[Install]
WantedBy=docker.service
用于删除 docker 容器的脚本 ( /opt/docker-container-shutdown.sh
):
#!/usr/bin/env bash
containers=$(docker ps -q)
[ -z "$containers" ] || {
docker stop $containers
docker rm $containers
}
最后,使脚本可执行,重新加载 systemd,并启用服务:
sudo chmod +x /opt/docker-container-shutdown.sh
sudo systemctl daemon-reload
sudo systemctl enable --now docker-container-shutdown.sh
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.