如何使容器在Docker守护进程或主机系统重启后自动启动

44次阅读
没有评论

问题描述

在使用Docker时遇到一个问题,他创建了一个基于之前拉取的镜像的容器,并成功启动了它。但是,当Docker守护进程或主机系统重启时,容器会停止运行。用户想知道在创建容器后,下一步应该做什么,以使容器持久化,即在守护进程启动或重启时自动启动。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

要使容器在Docker守护进程或主机系统重启后自动启动,您需要为容器添加一个重启策略。
以下是一个示例命令,演示如何使用重启策略来启动容器:

docker run -dit --restart=always hello-world

在上面的示例中,我们使用了--restart=always参数来告诉Docker无论发生什么情况都要始终重新启动hello-world容器(并以交互方式在后台运行)。如果运行docker ps命令,您将看到容器一直在重新启动。要取消此设置,您需要更新容器的重启策略,如下所示:

docker update --restart=no <CONTAINER_ID>

请注意,<CONTAINER_ID>是您要更新的容器的ID。

方案2

使用脚本或工具来管理容器的启动顺序可能会增加复杂性,并且需要确保容器A和容器B之间的依赖关系正确设置。
另一种方法是编写脚本或使用工具来控制容器的运行顺序。您可以使用docker run命令来手动控制容器的启动顺序,或者使用一些第三方工具来管理容器的依赖关系。
以下是一个简单的bash脚本示例,可以在容器A启动后启动容器B:

#!/bin/bash
# 启动容器A
docker run -d --name container_a your_image_a
# 等待容器A完全启动
while ! docker exec container_a echo "Container A is ready"; do
  sleep 1
done
# 启动容器B
docker run -d --name container_b your_image_b

在这个示例中,我们首先使用docker run命令启动容器A,并将其命名为container_a。然后,使用一个循环来等待容器A完全启动(这里是通过在容器内运行echo命令来测试)。一旦容器A就绪,我们再使用docker run命令启动容器B,并将其命名为container_b
以上是两种常见的方法,您可以根据自己的需求选择适合您的方法来实现容器在Docker守护进程或主机系统重启后自动启动。

正文完