我经常在笔记本电脑上部署 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 /etc/systemd/system/shutdown-docker-containers.service