容器重启策略应优先使用--restart=unless-stopped,宿主机重启后自动启动,手动stop后不再自启;需确保docker服务开机自启,并通过docker inspect验证配置生效。

创建容器时直接加 --restart=unless-stopped 参数,就能让容器在宿主机重启后自动拉起,不用手动 docker start。
新建容器时指定重启策略
这是最稳妥的做法,避免后续补设。关键在于用对参数,而不是依赖脚本或定时任务。
-
推荐用 unless-stopped:宿主机重启后自动启动,但如果你执行过
docker stop,它就不会再自启,适合需要人工干预的场景 - always 更激进:只要 Docker daemon 启动,就一定拉起容器,哪怕你刚手动停掉它,适合数据库、消息队列等核心服务
- on-failure[:N]:只在非零退出码时重试,最多 N 次,适合批处理类容器
- 别用默认的
no,否则系统重启后容器永远处于 stopped 状态
典型命令示例
以 MySQL 容器为例,一条命令搞定配置和启动:
MiniMax 图片理解 + 网络搜索 MCP 工具。适配 Docker 环境(极空间等),支持图片 OCR 识别、图像内容理解、网络搜索。API Key 安全存储在本地 credentials 文件,不暴露在代码中。
docker run -d \ --name mysql-prod \ -e MYSQL_ROOT_PASSWORD=123456 \ -p 3306:3306 \ -v /data/mysql:/var/lib/mysql \ --restart unless-stopped \ mysql:8.0
其中 --restart unless-stopped 必须写在镜像名之前,位置错会导致参数被忽略。
必须同步确保 Docker 服务开机自启
容器能自启的前提是 Docker 守护进程本身随系统启动。光设容器策略不够,还得检查并启用 Docker 服务:
- 运行
systemctl is-enabled docker,返回enabled才算生效 - 如果没启用,执行
sudo systemctl enable docker - 该设置只需做一次,无需每次重启都操作
验证是否生效
创建完别急着关机测试,先快速确认配置已写入:
- 查单个容器:
docker inspect --format='{{.HostConfig.RestartPolicy.Name}}' mysql-prod,输出unless-stopped即成功 - 查所有容器策略:
docker ps -a --format '{{.Names}}\t{{.Status}}\t{{.RestartPolicy}}' - 注意:
docker ps显示的 Status 里带(healthy)或(exited)不影响重启策略,只看 RestartPolicy 字段










