如何防止所有docker容器在启动时自动重启?

问题描述 投票:0回答:1

我经常在笔记本电脑上部署 docker 容器进行开发,然后关闭计算机却忘记关闭 docker 容器。令我惊讶的是,多次重新启动后这些容器仍在运行。

如何更改此行为,以便任何 docker 容器(无论该容器是否附加了重新启动策略)都不会在下次启动时重新启动?

我正在运行 Linux,docker 通过 systemd 运行。

linux docker containers systemd
1个回答
3
投票

您可以通过创建一个依赖于 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
© www.soinside.com 2019 - 2024. All rights reserved.