首页 > 解决方案 > Docker“干净启动”

问题描述

我使用 Docker 开发一个 HW-SW 系统,其中经常发生重启和断电。我想设法忽略/销毁所有在关闭时正在运行的容器并从头开始启动 Docker(使用 docker-compose)。docker-compose 的 --force-recreate 选项似乎适用 - 存在一些问题,例如“卡住”“旧”端口映射阻止新容器实例运行。

标签: dockerdocker-composerestart

解决方案


通常,您可以使用--rm标志启动容器,因此一旦停止或系统关闭,它将删除容器。但是我没有为 docker-compose 找到类似的标志,您可以尝试以下方法,但它不会在关机或重启时手动工作

Usage: rm [options] [SERVICE...]

Options:
    -f, --force   Don't ask to confirm removal
    -s, --stop    Stop the containers, if required, before removing
    -v            Remove any anonymous volumes attached to containers

码头工人-comose rm

所以解决方法是运行 cron 作业bootup并删除所有容器。

remove_container.sh.

#!/bin/bash
# put sleep so the docker process ready
sleep 90
# remove all container
docker rm -f $(docker ps -aq)

定时任务

@reboot (sh /home/user/remove_container.sh)

您可以为窗口等添加类似的选项,上面的选项在 Ubuntu 发行版上进行了测试。


推荐阅读