reboot 后 Docker服务及容器自动启动设置

重启reboot操作系统后,发现docker 服务未启动,容器也未启动,天生反骨,怎么才能重启后自动启动呢

解决问题两个问题:

1、docker服务自动重启设置

systemctl enable docker.service

2、docker容器自动启动设置

docker ps -a

使用一下命令对镜像从起: docker restart imageid

在运行docker容器时可以加如下参数来保证每次docker服务重启后容器也自动重启:

docker run --restart=always

如果已经启动了则可以使用如下命令:

docker update --restart=always

重启系统后

docker ps -a

--restart具体参数值详细信息:

  • no - 容器退出时,不重启容器;
  • on-failure - 只有在非0状态退出时才从新启动容器;如果容器由于错误而退出,则将其重新启动,非零退出代码表示错误
  • unless-stopped - 重新启动容器,除非明确停止容器或者 Docker 被停止或重新启动
  • always -只要容器停止了,就重新启动

还可以在使用on - failure策略时,指定Docker将尝试重新启动容器的最大次数。默认情况下,Docker将尝试永远重新启动容器。

sudo docker run --restart=on-failure:10 redis

如果创建时未指定 --restart=always ,可通过update 命令

docker update --restart=always CONTAINER ID

下面例子的 Redis 容器会一直重启,除非明确停止这个容器或 Docker 重启了。

docker run -dit --restart unless-stopped redis

1.1 重启策略详情

使用重启策略时,记住以下几点:

重启策略只在容器启动成功后才生效。这种情况下,成功启动的意思是容器运行 10 秒以上,并且 Docker 已经开始监控它。这可以防止根本不启动的容器进入重启循环。
如果你手动停止一个容器,它的重启策略会被忽略,直到 Docker 守护进程重启或容器手动重启。这是防止重启循环的另一个尝试。
重启策略只作用于容器。swarm 服务的重启策略配置方式不同。查看 与服务重启相关的标志。

使用进程管理器

如果重启策略无法满足你的需求,例如依赖 Docker 容器的 Docker 外部进程,可以使用进程管理器,例如 upstart、systemd 或 supervisor。

警告:不要尝试将 Docker 重启策略与主机级进程管理器结合使用,因为这会产生冲突。

要使用进程管理器,请将其配置为使用通常用于手动启动容器的 docker start 或 docker service 命令启动容器或服务。有关更多详细信息,请参阅特定流程管理器的文档。
在容器内使用进程管理器

进程管理器也可以在容器内运行,以检查进程是否正在运行,如果没运行,则启动/重新启动进程。

警告:Docker 对这些无感知,只是在容器内监控操作系统进程。

Docker 并不推荐这种方法,因为它依赖于平台,甚至在给定的 Linux 发行版的不同版本中有所不同。

posted @   HaimaBlog  阅读(3062)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示