溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Docker是在哪里保存日志文件的

發(fā)布時(shí)間:2021-12-27 10:53:54 來(lái)源:億速云 閱讀:279 作者:柒染 欄目:開發(fā)技術(shù)

本篇文章給大家分享的是有關(guān)Docker是在哪里保存日志文件的,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來(lái)看看吧。

調(diào)試大多數(shù) Linux 程序通常涉及檢查日志文件,這可能是一個(gè)復(fù)雜的過程。但是,在 Docker 下的容器化環(huán)境中運(yùn)行時(shí),您需要使用更具體的工具來(lái)調(diào)試生產(chǎn)中的應(yīng)用程序。

日志存儲(chǔ)在哪里?

簡(jiǎn)單的答案是 Docker 將容器日志存儲(chǔ)在其主要存儲(chǔ)位置/var/lib/docker/. 每個(gè)容器都有一個(gè)特定于其 ID 的日志(完整 ID,而不是通常顯示的縮短的 ID),您可以像這樣訪問它:

/var/lib/docker/containers/ID/ID-json.log

這 就是它們的存儲(chǔ)位置,但由于它們采用 JSON 格式,因此不易讀取,并且必須使用完整的容器 ID 很煩人。Docker 提供了一個(gè)內(nèi)置命令來(lái)查看它們:

docker logs -f e4bd48ef3103

在這里,該-f 標(biāo)志將保持提示打開并“關(guān)注”文件中的任何新條目。您還可以使用–tail 該文件,或使用–timestamps 來(lái)顯示日志時(shí)間,或使用–until并 --since 根據(jù)時(shí)間進(jìn)行過濾。

如果您使用 Docker Compose,則可以使用其中的 log 命令輕松查看所有日志:

docker-compose  logs

但是,您會(huì)注意到的一件事是 STDOUT 和 STDERR,它們對(duì)很多事情都很有用,但只顯示 Docker 文件中“CMD”指定的入口點(diǎn)的控制臺(tái)輸出。許多應(yīng)用程序都有自己的專用日志系統(tǒng),這些系統(tǒng)通常會(huì)記錄到/var/log/nginx/access.log. 仍然可以通過 Docker 從主機(jī)端訪問這樣的日志。

從容器內(nèi)的應(yīng)用程序查看日志

根據(jù)容器的不同,這可能不是必需的。例如,默認(rèn)的 NGINX 容器設(shè)置為將其 Docker 日志發(fā)送到 STDOUT 以簡(jiǎn)化日志檢查。它使用/dev/stdout 指向日志文件的符號(hào)鏈接來(lái)執(zhí)行此操作,您可以為容器設(shè)置類似的內(nèi)容。

RUN ln -sf /dev/stdout /var/log/nginx/access.log 
&& ln -sf /dev/stderr /var/log/nginx/error.log

但是,如果您想查看容器內(nèi)的特定文件,您可以這樣做。Docker 提供的exec -it 命令允許您在任何正在運(yùn)行的 Docker 進(jìn)程中運(yùn)行任何命令。使用它,您可以在 Docker 容器內(nèi)跟蹤日志文件:

docker exec -it e4bd48ef3103 tail -f log.txt

因?yàn)檫@允許您運(yùn)行任何命令,所以您可以使用journalctl 或任何其他您想要的調(diào)試策略,只要您以docker exec -it. /bin/bash 如果你想跳進(jìn)去四處逛逛,你甚至可以跑步。

一個(gè)更適合主機(jī)服務(wù)的永久性解決方案是使用 Docker 卷掛載。您可以將類似目錄綁定/var/log/nginx 到主機(jī)可見的卷。首先,創(chuàng)建一個(gè)新卷:

docker volume create nginx-logs

并使用以下命令運(yùn)行容器–mount:

docker run -d \
--name devtest \
--mount source=nginx-logs,target=/var/log/nginx \
nginx:latest

如果您使用 Docker Compose,則該過程可以自動(dòng)化:

version: "3.0"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - nginx-logs:/var/log/nginx/
volumes:
  nginx-logs:

這樣,主機(jī)上的任何日志聚合服務(wù)都可以直接攝取日志文件。

查看 Docker 守護(hù)進(jìn)程日志

如果您想查看服務(wù)器上整個(gè) Docker 服務(wù)的特定日志,而不是任何特定的容器化應(yīng)用程序,您需要查看journalctl 日志:

sudo journalctl -fu docker.service

這是它在大多數(shù)系統(tǒng)上的存儲(chǔ)位置,但在某些系統(tǒng)上的位置不同:

  • 亞馬遜Linux: /var/log/docker

  • CentOS/RHEL: /var/log/messages | grep docker

  • 蘋果: ~/Library/Containers/com.docker.docker/Data/log/vm/dockerd.log

  • Windows: AppData\Roaming\Docker\log\vm\dockerd.log 

以上就是Docker是在哪里保存日志文件的,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI