72 lines
1.8 KiB
Markdown
Executable File
72 lines
1.8 KiB
Markdown
Executable File
# 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/)
|