假设我有一个想要运行的Docker容器,然后我可以调用它
$ docker run ...
一切都很好。是否有一种内置的方法来运行容器,使其在系统崩溃并重新启动时自动重新启动?
如果是的话,这在Docker Compose中也可用吗?
假设我有一个想要运行的Docker容器,然后我可以调用它
$ docker run ...
一切都很好。是否有一种内置的方法来运行容器,使其在系统崩溃并重新启动时自动重新启动?
如果是的话,这在Docker Compose中也可用吗?
当前回答
我想在Windows上实现启动容器启动。
因此,我只是创建了一个在系统引导时启动的计划任务。该任务只是启动“Docker for Windows.exe”(或任何Docker可执行文件的名称)。
然后,所有重新启动策略为“always”的容器将启动。
其他回答
是的,docker有重启策略,比如docker run——restart=always,可以处理这个问题。这也可以在compose中使用。Yml配置文件的重启:始终。
我想在Windows上实现启动容器启动。
因此,我只是创建了一个在系统引导时启动的计划任务。该任务只是启动“Docker for Windows.exe”(或任何Docker可执行文件的名称)。
然后,所有重新启动策略为“always”的容器将启动。
文档中的更“温和”模式:
docker run -dit --restart unless-stopped <image_name>
你可以运行一个总是重启的容器:
$ docker run -dit --restart unless-stopped <image name OR image hash>
如果你想改变一个正在运行的容器的配置,你应该通过以下方式更新它:
$ docker update --restart=<options> <container ID OR name>
如果你想查看容器的当前策略,首先执行下面的命令:
docker inspect gateway | grep RestartPolicy -A 3
毕竟,不要忘记在系统引导时启用已安装的docker守护进程:
$ systemctl enable docker
要查看重启策略的完整列表,请参见:重启策略
你可以使用docker update——restart=on-failure <容器ID或名称>。
顾名思义,On -failure不仅会在失败时重新启动容器,还会在系统引导时重新启动容器。
根据文档,有多个重启选项:
Flag Description
no Do not automatically restart the container. (the default)
on-failure Restart the container if it exits due to an error, which manifests as a non-zero exit code.
always Always restart the container if it stops. If it is manually stopped, it is restarted only when Docker daemon restarts or the container itself is manually restarted. (See the second bullet listed in restart policy details)
unless-stopped Similar to always, except that when the container is stopped (manually or otherwise), it is not restarted even after Docker daemon restarts.