1. 程式人生 > 其它 >Docker容器日誌打滿機器的解決方式

Docker容器日誌打滿機器的解決方式

Docker容器日誌打滿機器的解決方式

在我們使用Docker容器啟動服務時,常常會由於容器內的日誌過多導致把宿主機的磁碟打滿。

本文主要講解如何解決容器日誌打滿磁碟的問題。

容器日誌目錄

首先,我們來講一下容器日誌的位置。如果你的磁碟已經被容器日誌所打滿,則需要找到對應的日誌並進行刪除。

預設情況下,每個容器的日誌預設都會以json-file的格式儲存於 /var/lib/docker/containers/<容器id>/<容器id>-json.log檔案中。

如果你的磁碟已經被日誌打滿,此時可以清除該檔案來釋放空間。需要注意的是,不建議直接使用rm命令刪除日誌檔案,因為在某些情況下,rm

命令無法直接釋放磁碟空間。

一種推薦的刪除方式如下:

  1. echo " ">/var/lib/docker/containers/<容器id>/<容器id>-json.log

docker配置檔案中配置日誌資訊

上述方法總是治標不治本。為了解決該問題,我們希望能直接限制容器日誌的大小。

限制容器日誌的方式分為全侷限制和單個容器限制。我們首先來說明如下進行全侷限制。

建立/修改/etc/docker/daemon.json該檔案,在該檔案中增加如下配置:

  1. {
  2. "log-driver":"json-file",
  3. "log-opts":{"max-size":"1g","max-file"
    :"1"}
  4. }

此時,表示全侷限制所有容器的預設日誌配置為json-file格式且最大限制為1G。

docker容器啟動命令中配置日誌資訊

有時,我們希望僅僅針對單個容器進行限制,那麼此時方式如下:
docker run的容器啟動命令中新增如下引數:

  1. --log-opt max-size=1g--log-opt max-file=1

compose檔案中配置日誌資訊

很多時候,我們啟動容器不是通過docker run進行挨個啟動,而是通過compose進行統一的管理。
此時,我們同樣可以在compose的配置檔案中進行容器日誌的限制。

一個示例如下:

  1. version:"2"
  2. services
    :
  3. mysql:
  4. image: mysql
  5. logging:
  6. driver:"json-file"
  7. options:
  8. max-size:"1g"

評論前請先登入

登入 註冊