文章内容

2025/11/11 23:38:11,作 者: 黄兵

Docker 容器开机自动启动

Docker 容器默认不会在系统重启后自动启动。需要添加重启策略。

解决方案

方案 1:为现有容器添加重启策略(推荐)

# 更新现有容器的重启策略
docker update --restart=always nginx-quic

# 启动容器
docker start nginx-quic

# 检查状态
docker ps

方案 2:删除并重新创建容器(带自动重启)

# 删除旧容器
docker rm nginx-quic

# 重新创建,添加 --restart=always
docker run -d --name nginx-quic \
  --restart=always \
  -p 80:80 -p 443:443/tcp -p 443:443/udp \
  -v /root/nginx-quic/conf:/etc/nginx/conf.d:ro \
  -v /etc/letsencrypt/live:/etc/letsencrypt/live:ro \
  -v /etc/letsencrypt/archive:/etc/letsencrypt/archive:ro \
  -v /root/nginx-quic/html:/usr/share/nginx/html:ro \
  macbre/nginx-http3:latest

# 检查状态
docker ps

# 查看日志
docker logs nginx-quic

重启策略说明

  • --restart=no:默认值,容器退出后不重启
  • --restart=always:容器退出后总是重启,包括系统重启后
  • --restart=unless-stopped:除非手动停止,否则总是重启(推荐)
  • --restart=on-failure[:max-retries]:仅在容器非正常退出时重启

推荐使用 unless-stopped

docker update --restart=unless-stopped nginx-quic
docker start nginx-quic

这样的好处是:

  • 系统重启后自动启动
  • 但如果你手动执行 docker stop nginx-quic,它不会自动重启
  • always 更灵活

验证重启策略

# 查看容器的重启策略
docker inspect nginx-quic | grep -A 3 "RestartPolicy"

# 应该看到类似输出:
# "RestartPolicy": {
#     "Name": "unless-stopped",
#     "MaximumRetryCount": 0
# },

测试自动重启

# 测试容器重启
docker restart nginx-quic

# 等待几秒
sleep 3

# 检查状态(应该是 Up)
docker ps | grep nginx-quic

现在系统重启后,nginx-quic 容器会自动启动。

分享到:

发表评论

评论列表