实用网络站
白蓝主题五 · 清爽阅读
首页  > 压缩备份

Docker容器自动启动配置实战

每次服务器重启后,都要手动一个个启动ref="/tag/2019/" style="color:#EB6E00;font-weight:bold;">Docker容器,确实挺烦的。尤其是做备份任务的容器,比如用rsyncborg定期同步数据的,一旦没跑起来,数据安全就悬了。其实Docker本身支持容器自动启动,只要在运行时设置好重启策略,系统一恢复,容器自己就跑起来了。

三种重启策略选一个

Docker提供--restart参数来控制容器何时重启,常用选项有三个:

  • no:默认行为,不会自动重启
  • on-failure[:max-retries]:仅在容器非正常退出时重启,可指定最大重试次数
  • always:无论什么情况,只要守护进程运行着,就尝试重启
  • unless-stopped:类似always,但若手动停止容器,则不会自动拉起

对于备份类容器,推荐使用unless-stopped。这样既能在服务器重启后自动运行,又允许你在维护时手动停掉它而不被打扰。

启动容器时加上重启策略

比如你有一个打包备份的容器,镜像叫backup-tool:latest,想让它开机自启:

docker run -d \
--name backup-job \
--restart unless-stopped \
-v /data:/backup/data \
backup-tool:latest

这样只要Docker服务随系统启动(通常默认开启),这个容器就会跟着起来。

已有容器怎么加?

如果容器已经创建好了,别急着删。可以用update命令直接修改:

docker update --restart unless-stopped backup-job

这条命令不会重启容器,只是更新元信息。下次真正重启系统时,策略才会生效。

验证是否设置成功

查看容器详情,确认RestartPolicy有没有改对:

docker inspect backup-job | grep -i restart -A 5

输出里能看到"Name": "unless-stopped"就说明没问题。

举个实际场景:公司NAS每天凌晨用Docker跑一次增量备份到异地服务器。某天停电重启后,运维没到场,但因为设置了自动启动,备份按时执行,避免了数据丢失。这种小配置,关键时刻真能省大心。

记住一点:自动启动依赖Docker服务自身开机自启。CentOS、Ubuntu这些主流系统安装Docker后一般会自动注册systemd服务,但最好还是检查一下:

sudo systemctl is-enabled docker

如果不是enabled,补上这句:

sudo systemctl enable docker

搞定之后,再也不用担心重启后容器“失联”了。