Docker 中设置容器开机自启动

在 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}}"

注意事项

  1. always vs unless-stopped

    • always:即使手动停止容器,Docker 重启后也会启动它
    • unless-stopped:如果手动停止了容器,Docker 重启后不会启动它
  2. 重启延迟:Docker 使用指数退避算法来避免频繁重启失败的服务

  3. 系统要求:确保宿主机系统启动时 Docker 服务能够正常启动

这样设置后,当宿主机重启时,配置了重启策略的容器就会自动启动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

clownAdam

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值