# CentOS 7 设置 Docker 开机自启动 ## 1. 设置 Docker 开机启动 ```bash # 启用 Docker 服务开机自启 systemctl enable docker # 验证设置 systemctl is-enabled docker ``` ## 2. 设置容器自动重启 ### 方式一:创建容器时指定 ```bash docker run -d --restart=always --name <容器名> <镜像> ``` `--restart` 参数选项: | 值 | 说明 | |----|------| | `no` | 容器退出时不重启(默认) | | `on-failure` | 仅在非 0 状态退出时重启 | | `on-failure:3` | 非 0 退出时最多重启 3 次 | | `always` | 无论退出状态如何都重启 | | `unless-stopped` | 除非手动停止,否则始终重启 | ### 方式二:修改已有容器 ```bash # 更新容器重启策略 docker update --restart=always <容器ID或名称> # 示例 docker update --restart=always my-redis docker update --restart=always 8a3c5f7d2e91 ``` ## 3. 批量设置所有容器 ```bash # 将所有容器设置为自动重启 docker update --restart=always $(docker ps -aq) ``` ## 4. 验证配置 ```bash # 查看容器重启策略 docker inspect <容器名> --format='{{.HostConfig.RestartPolicy.Name}}' # 查看所有容器的重启策略 docker ps --format '{{.Names}}: {{.Status}}' ``` ## 常见问题 **Q:容器内应用崩溃退出后,Docker 会重启容器吗?** A:`--restart=always` 会在容器退出时自动重启。但如果容器内应用不断崩溃,Docker 会不断重启,可能造成死循环。建议使用健康检查机制。 **Q:服务器重启后,容器启动顺序重要吗?** A:如果容器有依赖关系(如 Web 应用依赖数据库),需要考虑启动顺序。可使用 `docker-compose` 的 `depends_on` 或设置重启策略的 `condition`。 --- > 参考:[Docker 官方文档 - 重启策略](https://docs.docker.com/config/containers/start-containers-automatically/)