溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Docker容器磁盤占滿的情況有哪些

發(fā)布時間:2021-08-21 11:39:16 來源:億速云 閱讀:220 作者:小新 欄目:服務器

小編給大家分享一下Docker容器磁盤占滿的情況有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

應用日志過多

默認情況下,每個 Docker 容器都有 10G 的存儲空間,當超出該大小時,容器就會出現問題。

可以參考官方文檔 dm.basesize 參數的說明來修改默認的容器大?。?/p>

指定創(chuàng)建基本設備時要使用的大小,這會限制圖像和容器的大小。默認值為10G。請注意,精簡設備本質上是“稀疏的”,因此大多數空的10G設備不會在池上使用10 GB的空間。但是,文件系統(tǒng)將為空盒使用更多空間,設備越大。

可以在守護進程重啟時增加基本設備大小,這將允許所有未來的圖像和容器(基于這些新圖像)具有新的基本設備大小。

例子

$ sudo dockerd --storage-opt dm.basesize=50G

這將使基本設備大小增加到50G。如果現有基本設備大小大于50G,Docker守護程序將拋出錯誤。用戶可以使用此選項擴展基本設備大小,但不允許縮小。

此值會影響系統(tǒng)范圍的“基本”空文件系統(tǒng),該文件系統(tǒng)可能已被拉出的圖像初始化和繼承。通常,更改此值需要執(zhí)行其他步驟:

$ sudo service docker stop

$ sudo rm -rf /var/lib/docker

$ sudo service docker start

我在這里遇到的問題是因為某個模塊會在 10 分鐘內輸出 1G 的日志,修改日志策略后可以解決該問題。

Dockerd 日志過多

有一個 GitLab 的 docker 服務,運行幾個月后就會出現無法 push 和 pull 的情況,原因都是因為 /var/lib/docker 磁盤空間已滿導致的。而導致磁盤空間占滿的原因是因為 dockerd 的日志占用了十幾G的空間導致的。

日志文件的路徑形如: /var/lib/docker/containers/CONTAINER_ID/CONTAINER_ID-json.log

參考:https://stackoverflow.com/questions/31829587/docker-container-logs-taking-all-my-disk-space

可以參考如下幾種解決方案:

1. 啟動容器參數

參考:https://docs.docker.com/engine/reference/commandline/run/

使用 --log-opt Log driver options 配置日志策略。

例如: --log-opt max-size=50m。

2. 全局默認配置

在 daemon.json 中配置,linux 中默認位置為 /etc/docker。

配置示例:

{
 "log-driver": "json-file",
 "log-opts": {
  "max-size": "10m",
  "max-file": "3",
  "labels": "production_status",
  "env": "os,customer"
 }
}

日志配置參考:https://docs.docker.com/config/containers/logging/configure/

完整 daemon.json 示例參考:https://docs.docker.com/engine/reference/commandline/dockerd/

{
 "authorization-plugins": [],
 "data-root": "",
 "dns": [],
 "dns-opts": [],
 "dns-search": [],
 "exec-opts": [],
 "exec-root": "",
 "experimental": false,
 "features": {},
 "storage-driver": "",
 "storage-opts": [],
 "labels": [],
 "live-restore": true,
 "log-driver": "json-file",
 "log-opts": {
 "max-size": "10m",
 "max-file":"5",
 "labels": "somelabel",
 "env": "os,customer"
 },
 "mtu": 0,
 "pidfile": "",
 "cluster-store": "",
 "cluster-store-opts": {},
 "cluster-advertise": "",
 "max-concurrent-downloads": 3,
 "max-concurrent-uploads": 5,
 "default-shm-size": "64M",
 "shutdown-timeout": 15,
 "debug": true,
 "hosts": [],
 "log-level": "",
 "tls": true,
 "tlsverify": true,
 "tlscacert": "",
 "tlscert": "",
 "tlskey": "",
 "swarm-default-advertise-addr": "",
 "api-cors-header": "",
 "selinux-enabled": false,
 "userns-remap": "",
 "group": "",
 "cgroup-parent": "",
 "default-ulimits": {
 "nofile": {
  "Name": "nofile",
  "Hard": 64000,
  "Soft": 64000
 }
 },
 "init": false,
 "init-path": "/usr/libexec/docker-init",
 "ipv6": false,
 "iptables": false,
 "ip-forward": false,
 "ip-masq": false,
 "userland-proxy": false,
 "userland-proxy-path": "/usr/libexec/docker-proxy",
 "ip": "0.0.0.0",
 "bridge": "",
 "bip": "",
 "fixed-cidr": "",
 "fixed-cidr-v6": "",
 "default-gateway": "",
 "default-gateway-v6": "",
 "icc": false,
 "raw-logs": false,
 "allow-nondistributable-artifacts": [],
 "registry-mirrors": [],
 "seccomp-profile": "",
 "insecure-registries": [],
 "no-new-privileges": false,
 "default-runtime": "runc",
 "oom-score-adjust": -500,
 "node-generic-resources": ["NVIDIA-GPU=UUID1", "NVIDIA-GPU=UUID2"],
 "runtimes": {
 "cc-runtime": {
  "path": "/usr/bin/cc-runtime"
 },
 "custom": {
  "path": "/usr/local/bin/my-runc-replacement",
  "runtimeArgs": [
  "--debug"
  ]
 }
 },
 "default-address-pools":[{"base":"172.80.0.0/16","size":24},
 {"base":"172.90.0.0/16","size":24}]
}

配置參數后需要重啟 docker 服務。

docker-compose 配置

參考:https://docs.docker.com/compose/compose-file/compose-file-v2/

配置示例:

logging:
 options:
  max-size: '12m'
  max-file: '5'
 driver: json-file

以上是“Docker容器磁盤占滿的情況有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI