溫馨提示×

Linux Docker日志如何查看

小樊
54
2025-09-18 13:03:31
欄目: 智能運維

Linux下查看Docker日志的常用方法

一、使用docker logs命令(最常用)

docker logs是Docker原生提供的日志查看工具,用于獲取容器的**標準輸出(stdout)標準錯誤(stderr)**日志,適用于大多數日常運維場景。

  • 基本用法:直接指定容器名稱或ID,查看自啟動以來的所有日志。
    示例:docker logs my_containermy_container為容器名稱或ID,可通過docker ps獲?。?。
  • 實時跟蹤日志:添加-f參數,實時輸出容器最新日志(類似tail -f),按Ctrl+C停止。
    示例:docker logs -f my_container。
  • 查看最后N行:使用--tail參數限制顯示行數,避免日志過多。
    示例:docker logs --tail 10 my_container(僅顯示最后10行)。
  • 查看特定時間段日志:通過--since(從某時間后)和--until(到某時間前)篩選日志,時間格式支持5m(5分鐘前)、1h(1小時前)、2024-01-01(具體日期)。
    示例:docker logs --since 5m --until 1h my_container(查看5分鐘前到1小時前的日志)。

二、查看Docker守護進程日志(引擎級日志)

若需排查Docker引擎本身的問題(如容器無法啟動、守護進程崩潰),需查看守護進程日志,其位置因Linux發行版而異:

  • Systemd系統(如Ubuntu 16.04+、CentOS 7+):使用journalctl命令查看。
    示例:journalctl -u docker(實時查看)、journalctl -u docker --since "2024-01-01"(查看指定時間后日志)。
  • Upstart系統(如Ubuntu 14.04):日志文件通常位于/var/log/upstart/docker.log,直接用cattail查看。
    示例:cat /var/log/upstart/docker.log。

三、直接訪問容器日志文件(默認路徑)

Docker默認使用json-file日志驅動,容器日志以JSON格式存儲在宿主機的/var/lib/docker/containers/<容器ID>/<容器ID>-json.log路徑下??赏ㄟ^以下步驟查看:

  1. 獲取容器ID:docker ps(列出運行中的容器)或docker ps -a(列出所有容器)。
  2. 查看日志路徑:docker inspect --format='{{.LogPath}}' <容器ID>(輸出日志文件的完整路徑)。
  3. 讀取日志文件:使用cat、lesstail命令查看。
    示例:cat /var/lib/docker/containers/abc123/abc123-json.logabc123為容器ID)。

四、進入容器內部查看應用日志

若應用程序將日志輸出到容器內部的特定文件(如/var/log/app.log),可通過docker exec命令進入容器,再使用系統命令查看:

  1. 進入容器Shell:docker exec -it <容器ID> /bin/bashbash為容器內的Shell,若容器無bash,可替換為sh)。
  2. 查看日志文件:使用cat、tailless命令。
    示例:cat /var/log/app.log/var/log/app.log為應用日志路徑,需根據實際情況調整)。

五、配置日志驅動(高級場景)

默認的json-file驅動適合大多數場景,但在生產環境中,可能需要將日志發送到遠程服務器(如syslog、ELK)或第三方日志平臺(如Fluentd、Splunk),此時需配置日志驅動:

  • 修改Docker守護進程配置:編輯/etc/docker/daemon.json(若文件不存在則創建),添加日志驅動配置。
    示例(syslog驅動):
    {
      "log-driver": "syslog",
      "log-opts": {
        "syslog-address": "tcp://192.168.0.42:123"  // syslog服務器地址
      }
    }
    
    重啟Docker使配置生效:sudo systemctl restart docker。
  • 啟動容器時指定日志驅動:若僅需臨時修改某容器的日志驅動,可在docker run命令中添加--log-driver--log-opt參數。
    示例(fluentd驅動):
    docker run --log-driver=fluentd --log-opt fluentd-address=localhost:24224 --name my_container my_image。

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