首页主机资讯Ubuntu Docker如何实现自动重启

Ubuntu Docker如何实现自动重启

时间2025-10-23 15:49:03发布访客分类主机资讯浏览1369
导读:Ubuntu Docker实现自动重启的方法 1. 通过Docker Restart策略(推荐) Docker原生支持Restart策略,是最简单、最直接的自动重启方式,适用于大多数场景。策略类型包括: no(默认):容器退出后不自动重启...

Ubuntu Docker实现自动重启的方法

1. 通过Docker Restart策略(推荐)

Docker原生支持Restart策略,是最简单、最直接的自动重启方式,适用于大多数场景。策略类型包括:

  • no(默认):容器退出后不自动重启;
  • on-failure:容器以非0状态码退出时自动重启(可指定最大重启次数,如on-failure:5表示最多重启5次);
  • always:无论退出状态码如何,容器退出后总是自动重启;
  • unless-stopped:容器总是自动重启,除非被手动停止。
① 运行容器时直接设置重启策略

使用docker run命令时,通过--restart参数指定策略,例如:

docker run -d --restart always --name my_container my_image

上述命令会启动一个名为my_container的容器,即使容器因故障退出,也会自动重启。

② 修改现有容器的重启策略

若容器已在运行,可使用docker update命令动态调整重启策略,例如:

docker update --restart always my_container

此命令会将my_container的策略改为“总是自动重启”。

③ 查看容器重启策略

使用docker inspect命令查看容器的当前重启策略,例如:

docker inspect --format='{
{
.HostConfig.RestartPolicy}
}
    ' my_container

输出结果会显示容器的RestartPolicy类型(如always)。

2. 通过Docker Compose设置重启策略

若使用Docker Compose管理容器,可在docker-compose.yml文件中为服务指定重启策略,例如:

version: '3'
services:
  my_service:
    image: my_image
    restart: always  # 或 on-failure、unless-stopped

保存文件后,运行docker-compose up -d启动服务,容器会根据策略自动重启。

3. 可选:自定义脚本+系统服务(非原生方案)

若需更复杂的自动重启逻辑(如定时检查),可创建自定义脚本并通过systemd设置为系统服务:

  • 步骤1:编写重启脚本(如/path/to/restart.sh),内容为重启容器的命令:
    #!/bin/bash
    docker restart my_container
    
    赋予脚本执行权限:chmod +x /path/to/restart.sh
  • 步骤2:编写守护进程脚本(如/path/to/daemon.sh),定时调用重启脚本:
    #!/bin/bash
    while true;
         do
      /path/to/restart.sh
      sleep 3600  # 每隔1小时执行一次
    done
    
  • 步骤3:创建systemd服务文件(如/etc/systemd/system/docker-autorestart.service),内容如下:
    [Unit]
    Description=Docker Auto Restart Service
    [Service]
    ExecStart=/path/to/daemon.sh
    [Install]
    WantedBy=default.target
    
  • 步骤4:启用并启动服务:
    sudo mv docker-autorestart.service /etc/systemd/system/
    sudo systemctl enable docker-autorestart.service
    sudo systemctl start docker-autorestart.service
    
    此方案适用于需要额外控制(如日志记录、条件判断)的场景,但配置复杂度较高。

注意事项

  • 优先使用Docker原生的Restart策略,无需额外配置,可靠性更高;
  • 自定义脚本方案需确保systemd服务正常运行,避免守护进程崩溃导致自动重启失效;
  • 若Docker服务本身未设置开机自启,需先通过sudo systemctl enable docker设置,确保主机重启后Docker服务自动启动。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu Docker如何实现自动重启
本文地址: https://pptw.com/jishu/733510.html
Ubuntu环境下Golang打包常见问题 Ubuntu Docker如何实现容器监控

游客 回复需填写必要信息