在 Docker 中设置容器开机自启动有多种方法,以下是几种常用的方式:
1. 使用 --restart 参数(推荐)
创建容器时设置
docker run -d --name my-container --restart=always nginx
对已存在的容器设置
docker update --restart=always <container_name_or_id>
2. restart 策略选项
no:不自动重启(默认)always:总是重启,无论退出状态码是什么unless-stopped:除非手动停止,否则总是重启on-failure:仅在非正常退出时重启(退出状态码非0)
推荐使用 unless-stopped:
docker run -d --name my-container --restart=unless-stopped nginx
3. 使用 Docker Compose
在 docker-compose.yml 文件中配置:
version: '3'
services:
web:
image: nginx
restart: unless-stopped
ports:
- "80:80"
database:
image: mysql:5.7
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
4. 设置 Docker 服务开机启动
确保 Docker 服务本身开机启动:
Linux (Systemd)
# 启用 Docker 服务开机启动
sudo systemctl enable docker
# 启动 Docker 服务
sudo systemctl start docker
Windows
# 设置 Docker 服务自动启动
Set-Service -Name "Docker" -StartupType Automatic
5. 验证设置
检查容器的重启策略:
docker inspect <container_name_or_id> | grep -A 5 "RestartPolicy"
查看所有容器的重启策略:
docker ps -a --format "table {{.Names}}\t{{.Status}}\t{{.RestartPolicy}}"
注意事项
-
alwaysvsunless-stopped:always:即使手动停止容器,Docker 重启后也会启动它unless-stopped:如果手动停止了容器,Docker 重启后不会启动它
-
重启延迟:Docker 使用指数退避算法来避免频繁重启失败的服务
-
系统要求:确保宿主机系统启动时 Docker 服务能够正常启动
这样设置后,当宿主机重启时,配置了重启策略的容器就会自动启动。

9万+

被折叠的 条评论
为什么被折叠?



