溫馨提示×

Ubuntu Docker如何實現自動重啟

小樊
44
2025-10-22 21:41:22
欄目: 智能運維

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服務自動啟動。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女