docker - Docker“干净启动”
问题描述
我使用 Docker 开发一个 HW-SW 系统,其中经常发生重启和断电。我想设法忽略/销毁所有在关闭时正在运行的容器并从头开始启动 Docker(使用 docker-compose)。docker-compose 的 --force-recreate 选项似乎适用 - 存在一些问题,例如“卡住”“旧”端口映射阻止新容器实例运行。
解决方案
通常,您可以使用--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
所以解决方法是运行 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 发行版上进行了测试。
推荐阅读
- visual-studio - 什么是
设计师 在.csproj 中? - javascript - 如何检测模式元素是否在 vue.js 中打开?
- apache-drill - Apache Drill 的 MapR 驱动程序停止了吗?现在怎么办?
- docker - 无法从 docker 访问应用程序
- html - 将同一行“First Name”和“Last Name”上的两个输入列与其错误消息和标签对齐
- reactjs - 如何在 nextjs 中同时使用作用域和全局 css
- javascript - 切换时多个滑块崩溃
- amazon-web-services - SSH端口转发与秘密文件(mac)
- python - 'numpy.reshape' 和 'ndarray.reshape' 如何等效?
- html - 引导卡中的中心进度条