智用指南
第二套高阶模板 · 更大气的阅读体验

Docker容器自动启动,让服务不再手动操心

发布时间:2025-12-16 16:56:47 阅读:283 次

家里用树莓派搭了个小ref="/tag/414/" style="color:#C468A7;font-weight:bold;">服务器,跑着几个常用的Docker容器,比如博客、下载工具和内网穿透。每次断电重启后,总得一个个手动启动容器,挺烦人的。后来发现Docker其实支持自动启动,配置好之后,系统一开机,服务全就位,跟没断过一样。

容器为啥不会自己启动?

默认情况下,Docker创建的容器在系统重启后并不会自动运行。你得登录进去,再敲一遍 docker start 容器名 才能恢复服务。对经常断电或者远程部署的小设备来说,这体验太差。

一行命令解决烦恼

其实在启动容器的时候加个参数就能搞定——--restart。这个选项告诉Docker:不管因为啥停了,都给我自动拉起来。

比如你运行一个Nginx容器,可以这样写:

docker run -d --name my-nginx --restart=always -p 80:80 nginx

这里的 --restart=always 就是关键。只要Docker服务本身启动了,这个容器就会跟着跑起来。

几种重启策略选一选

--restart 其实有几种模式:

  • no:默认行为,不自动重启
  • on-failure[:max-retries]:只有容器非正常退出时才重启,比如程序崩溃。还可以指定最多重试几次
  • always:无论怎么停,都自动启动
  • unless-stopped:类似always,但如果手动执行了 docker stop,那就不自动启动

家用场景推荐用 unless-stopped。比如你想临时关掉某个服务调试一下,又不想下次重启它还冒出来。

已经运行的容器也能改

如果你的容器早就跑起来了,不用删掉重做。直接更新策略就行:

docker update --restart=unless-stopped my-nginx

这条命令把名为 my-nginx 的容器改为“除非我手动停,否则都得启动”的模式。改完之后,哪怕系统重启,服务照样在线。

实际用起来真省心

我家那个下载机自从加上了自动启动,老婆再也不用问我:“为啥迅雷又连不上了?” 系统重启、停电恢复,所有服务默默归位,像什么都没发生过。这种小细节,用好了真的提升幸福感。