Docker Desktop GUI 不支持设置容器的 --restart 策略,必须通过 CLI 命令(如 docker run --restart 或 docker update --restart)或 docker-compose.yml 中的 restart 字段配置。

不能直接在 Docker Desktop GUI 界面里设置容器的 --restart 策略。 它只提供基础启动/停止、端口映射、环境变量等可视化配置,重启策略必须通过 CLI 命令或 Compose 文件注入。
docker run 创建容器时加 --restart 参数
Docker Desktop 底层仍依赖 dockerd,所以命令行方式完全有效。只要你在 Docker Desktop 启动后打开终端执行 docker run,策略就会生效:
-
--restart=no:默认值,退出后不重启(调试或一次性任务用) -
--restart=on-failure:3:仅非零退出码时重启,最多 3 次(防依赖未就绪导致的死循环) -
--restart=unless-stopped:宿主机重启后自动拉起,但手动执行docker stop后不再自启(生产环境最常用) -
--restart=always:不管是否被手动停过,只要 daemon 起来了就硬拉(必须配HEALTHCHECK,否则健康失败也会无限重启)
示例:docker run -d --restart=unless-stopped --name nginx-prod -p 80:80 nginx:alpine
Docker Desktop 的 Compose 文件中配 restart
如果你用 Docker Desktop 的 “Add new app” 或打开 docker-compose.yml 文件,可以在服务定义里写 restart 字段:
services:
web:
image: nginx:alpine
restart: unless-stopped
ports:
- "80:80"
注意:restart 是 Compose v2+ 的标准字段,不是 deploy.restart_policy(那是 Swarm 模式用的)。Docker Desktop 默认走 Compose V2,所以直接写就行。
已创建的容器怎么补上重启策略
Docker Desktop GUI 不提供修改已有容器策略的功能,必须用 CLI:
- 先确认容器名或 ID:
docker ps -a - 执行更新:
docker update --restart=unless-stopped - 验证是否生效:
docker inspect| grep -A 2 RestartPolicy
⚠️ 注意:docker update 只能改重启策略、内存限制等少数运行时参数,不能改镜像、端口映射或挂载卷 —— 这些得删掉重跑。
为什么 Docker Desktop 不在 UI 里加这个选项
不是技术做不到,而是设计取舍:Docker Desktop 定位是开发辅助工具,不是生产编排平台。重启策略属于基础设施可靠性范畴,更适合由 docker run 脚本、CI 流水线或 docker-compose.yml 统一管理。强行塞进 GUI 容易让用户忽略策略背后的语义差异(比如 always 和 unless-stopped 在运维意图上完全不同),反而埋下故障隐患。











