【问题标题】:How to prevent all docker containers from automatically restarting on boot?如何防止所有 docker 容器在启动时自动重启?
【发布时间】:2023-01-25 16:06:04
【问题描述】:

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

我怎样才能改变这种行为,以便任何 docker 容器,无论容器是否附加了重启策略,都不会在下次启动时重新启动?

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

【问题讨论】:

    标签: linux docker containers systemd


    【解决方案1】:

    您可以通过创建依赖于 docker 的 oneshot systemd 服务(通过 After= 设置顺序)然后在关闭时运行脚本来停止并删除所有容器来完成此操作。

    系统服务(即放在/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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-07
      • 1970-01-01
      相关资源
      最近更新 更多