--restart=always能开机自启,是因为Docker守护进程启动时会强制拉起所有标记该策略的容器,无论其此前状态;但必须同时满足Docker服务已systemctl enable docker且容器明确配置--restart=always。
用 --restart=always 实现容器开机自动重启,关键在于两点:容器本身设置了该策略,且 docker 服务本身已配置为系统开机自启。只设策略不启服务,或只启服务不设策略,都无法生效。
为什么 --restart=always 能开机自启
这个策略告诉 Docker 守护进程:只要它自己启动了,就立刻拉起所有标记为 always 的容器,不管这些容器之前是运行中、被手动停过,还是因崩溃退出。宿主机重启后,Docker 服务若能随系统启动,就会自动触发这一行为。
必须同时满足的两个前提
- Docker 服务已启用开机自启:执行
systemctl enable docker,再用systemctl is-enabled docker确认返回enabled - 容器创建或更新时明确指定
--restart=always,不能依赖默认值(默认是no)
具体操作方式
新建容器时直接带上参数(推荐):
docker run -d --name mydb --restart=always -p 5432:5432 -e POSTGRES_PASSWORD=123 postgres已有容器补设策略(无需删重建):
使用 Python 脚本下载 Docker 镜像并打包为 tar 文件。用户说“下载镜像”“拉取镜像”“pull xxx”“帮我下载 nginx 镜像”等时触发。支持 SOCKS5 代理直连(推荐)和国内镜像站加速两种模式。
验证是否生效:
docker inspect mydb | grep -i restart输出应为:"RestartPolicy": { "Name": "always", ... }
注意 always 的实际行为
- 手动执行
docker stop mydb后,容器会停止;但只要 Docker 服务重启(比如系统重启后),它仍会被自动拉起 - 如果容器内应用反复崩溃退出(比如配置错误),
always会持续重启,可能掩盖问题——建议搭配HEALTHCHECK使用 - 它不判断容器是否“健康”,只看“是否运行”,所以不适合所有场景;生产环境更常选
unless-stopped来避免误恢复已停用的服务

















