我们相信:世界是美好的,你是我也是。 来玩一下解压小游戏吧!

其实,这里存在着一个启动链路。系统启动,docker desktop启动,docker跟着启动,docker容器跟着启动,然后就是容器里面的服务启动。本文描述的是:docker启动后,docker容器跟随启动的问题。一句话总结的话,就是dockerrestart参数问题。

苏南大叔:docker容器如何设置自动启动?restart属性设置重启策略 - 容器随docker启动
docker容器如何设置自动启动?restart属性设置重启策略(图4-1)

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验总结。测试环境:win10docker@28.0.4docker desktop@4.40.0。在使用Docker时,经常希望容器能够随Docker服务的启动而自动启动,这可以通过设置容器的重启策略来实现。

前文回顾

苏南大叔在前面的文章里面,描述了:

本文就是基于这两篇文章,展开的。话说,苏南大叔使用docker搭建了自己的lnmp组合。但是,存在一个小小的问题,那就是:docker启动后,它们并不跟随启动,需要再次命令启动容器。

docker ps命令可以列出所有【运行中】的容器,所以,如果想查看到存在但是没有运行中的容器的话,需要增加【-a】参数。
如下图所示:

苏南大叔:docker容器如何设置自动启动?restart属性设置重启策略 - docker-ps-a
docker容器如何设置自动启动?restart属性设置重启策略(图4-2)

restart可用属性

dockerrestart属性,表格总结:

重启策略描述
no容器退出时,不重启容器
on-failure只有在容器非正常退出(退出状态非0)时才重启容器
always无论容器退出状态如何,都重启容器
unless-stopped容器退出时总是重启容器,但不考虑在Docker守护进程启动时已经停止的容器

所以,可能最好的实践方案是always

查看容器的restart属性

通过下面的命令,可以查看restart属性。

docker inspect -f "{{json .HostConfig.RestartPolicy}}" <your_container_name>
docker inspect --format={{.HostConfig.RestartPolicy.Name}} <your_container_name>

苏南大叔:docker容器如何设置自动启动?restart属性设置重启策略 - inspect-restart-policy
docker容器如何设置自动启动?restart属性设置重启策略(图4-3)

可以看到:没有自动启动的容器,restart属性(重启策略)为no

方案一:创建容器【时指定】restart属性

因为苏南大叔在创建相关容器的时候,已经设置了目录映射。所以,即使删除容器,数据也不会丢失。那么,可以删除容器,重新初始化新的容器。同时,设置--restart=always

docker run --restart=always <your_container_name>

方案二:创建容器【后修改】restart属性

如果容器已经启动,可以使用docker update命令来修改重启策略:
在创建好容器后,restart属性是可以再次修改的。可以使用下面的命令进行修改:

docker update --restart=always <your_container_name>

苏南大叔:docker容器如何设置自动启动?restart属性设置重启策略 - docker-update-restart-policy
docker容器如何设置自动启动?restart属性设置重启策略(图4-4)

结语

苏南大叔的docker系列经验文字,可以参考下面的链接:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   docker