确保Docker容器在主机启动时自动启动
是否有一种方法可以在主机启动时自动启动Docker容器?以前,我在docker run中使用“-restart always”参数,但它仅在docker引擎未关闭的情况下工作。如果使用docker swarm,可以使用确保Docker容器在主机启动时自动启动,docker,Docker,是否有一种方法可以在主机启动时自动启动Docker容器?以前,我在docker run中使用“-restart always”参数,但它仅在docker引擎未关闭的情况下工作。如果使用docker swarm,可以使用--mode global标志确保在docker swarm中的每个节点上运行 docker service create --mode global ... 如果您不使用docker swarm,我认为最好的解决方案是使用您系统的init系统,如@I.R.R所说的systemd
--mode global
标志确保在docker swarm中的每个节点上运行
docker service create --mode global ...
如果您不使用docker swarm,我认为最好的解决方案是使用您系统的init系统,如@I.R.R所说的systemd
。您可以为systemd创建自己的服务
文件,并指定服务启动时的条件,如下所示
[Unit]
Description=Your App
After=docker
请参阅digital ocean的这篇文章。作为您的评论,我认为您误解了
——始终重新启动
一旦运行了docker run--restart always container
,即使明确停止了容器,每次重新启动主机时都会重新启动容器
比如说
$ docker run --restart always --detach --name auto-start-redis redis
d04dfbd73eb9d2ba5beac41363aa5c45c0e034e08173daa6146c3c704e0cd1da
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d04dfbd73eb9 redis "docker-entrypoint..." 4 seconds ago Up 4 seconds 6379/tcp auto-start-redis
$ reboot
# After reboot-------------------------------
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d04dfbd73eb9 redis "docker-entrypoint..." About a minute ago Up 21 seconds 6379/tcp auto-start-redis
$ docker stop auto-start-redis
auto-start-redis
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d04dfbd73eb9 redis "docker-entrypoint..." 2 minutes ago Exited (0) 30 seconds ago auto-start-redis
$ reboot
# After reboot-------------------------------
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d04dfbd73eb9 redis "docker-entrypoint..." 3 minutes ago Up 12 seconds 6379/tcp auto-start-redis
然而,当然,这是基于docker主机
自动启动的前提<代码>docker主机
在这里表示docker守护进程
进程本身。通常默认情况下,docker主机
将自动启动,但如果不是,则需要自行设置
我不确定您使用的是哪个操作系统,但当涉及到Ubuntu16
时,您可以使用systemctl
命令来实现
$ sudo systemctl enable docker
# To tell systemd to start services automatically at boot, you must enable.
如果您使用的是RHEL变体,这应该可以工作:我将其作为参考,但当我尝试启动服务时,它总是失败,并且没有得到明确的错误。为什么不想使用--始终重新启动?使用该标志,在您删除容器之前,每当主机启动时,容器都会自动启动。@SangminKim实际上,如果主机死亡,容器不会重新启动。我再看一看,Docker swarm在这件事上太过分了。事实上,我试过做服务路线,但由于某种原因,它总是失败。我要做的是在文件中有一个docker start命令。我会再看一看。我使用了restart always参数,但由于某些原因,它没有启动,尽管在我没有遇到任何问题之前。如果要在windows启动中自动启动docker守护程序和docker desktop,请执行以下步骤