Docker 容器的 --restart
标志用于定义容器的重启策略。--restart=unless-stopped
和 --restart=always
这两个选项有一些细微但重要的区别:
-
--restart=always
:- 容器将始终尝试重启,无论它是如何停止的。
- 如果容器崩溃,它会自动重启。
- 如果Docker守护进程重启,容器也会自动启动。
- 即使容器被手动停止(如使用
docker stop
命令),当Docker守护进程重启时,它也会重新启动。
-
--restart=unless-stopped
:- 容器会在崩溃时自动重启。
- 如果Docker守护进程重启,容器也会自动启动。
- 关键区别:如果容器被手动停止(如使用
docker stop
命令),它不会在Docker守护进程重启时自动启动。
主要区别总结:
always
策略会在所有情况下尝试重启容器,包括手动停止后。unless-stopped
策略尊重手动停止的决定,不会在手动停止后自动重启容器。
选择建议:
- 如果您希望容器始终运行,无论发生什么,选择
always
。 - 如果您希望能够手动停止容器并保持停止状态,即使在Docker重启后,选择
unless-stopped
。
这个选择对于管理和维护容器很重要,特别是在需要临时停止某些服务或进行维护时。unless-stopped
通常被认为是更灵活的选项,因为它允许管理员在需要时手动控制容器的状态。