要让 Docker 容器在服务器重启后自动运行,必须同时启用 Docker 服务开机自启(sudo systemctl enable docker)并为容器设置重启策略(如 --restart=always);仅做其一无效。
要让 Docker 容器在服务器重启后自动运行,必须同时满足两个前提:Docker 服务本身开机自启,且容器设置了合适的重启策略。单独做其中一项是不够的。
Docker 容器依赖 Docker 守护进程(dockerd)运行。如果系统启动时 docker 服务没起来,所有容器都起不来。
重启策略决定容器退出后是否自动拉起,它不依赖宿主机是否“开机”,而是由 Docker 守护进程在检测到容器停止时触发。
docker stop,则不会在 daemon 重启后自动恢复(兼顾可控性)创建容器阶段就指定策略,最稳妥:
docker run -d --restart=always --name myapp -p 8080:80 nginx:alpine
注意:-d 是后台运行的必要条件,前台模式(如 -it)不适用重启策略。
无需删掉重建,用 docker update 即可生效(无需重启 Docker 服务):
docker update --restart=always myapp
批量设置所有容器(谨慎使用):
docker update --restart=always $(docker ps -aq)
查看某容器当前策略:
docker inspect -f '{{.HostConfig.RestartPolicy.Name}}' myapp