本文是我自己最近遇到的兩種情況,後續有新發現再補充。
參考文件:
應用日誌過多
預設情況下,每個 docker 容器都有 10g 的儲存空間,當超出該大小時,容器就會出現問題。
可以參考官方文件 dm.basesize 引數的說明來修改預設的容器大小:
指定建立基本裝置時要使用的大小,這會限制影象和容器的大小。預設值為10g。請注意,精簡裝置本質上是「稀疏的」,因此大多數空的10g裝置不會在池上使用10 gb的空間。但是,檔案系統將為空盒使用更多空間,裝置越大。
可以在守護程序重啟時增加基本裝置大小,這將允許所有未來的影象和容器(基於這些新影象)具有新的基本裝置大小。
例子$ sudo dockerd --storage-opt dm.basesize=50g
這將使基本裝置大小增加到50g。如果現有基本裝置大小大於50g,docker守護程式將丟擲錯誤。使用者可以使用此選項擴充套件基本裝置大小,但不允許縮小。
此值會影響系統範圍的「基本」空檔案系統,該檔案系統可能已被拉出的影象初始化和繼承。通常,更改此值需要執行其他步驟:
$ 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
參考: ... g-all-my-disk-space
可以參考如下幾種解決方案:
1. 啟動容器引數
參考:使用 --log-opt log driver options 配置日誌策略。
例如: --log-opt max-size=50m。
2. 全域性預設配置
在 daemon.json 中配置,linux 中預設位置為 /etc/docker。
配置示例:
}日誌配置參考:
完整 daemon.json 示例參考:
,"storage-driver": "",
"storage-opts": ,
"labels": ,
"live-restore": true,
"log-driver": "json-file",
"log-opts": ,
"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":
},"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": ,
"custom":
},"default-address-pools":[,]}
配置引數後需要重啟 docker 服務。
docker-compose 配置
參考:配置示例:
logging:
options:
max-size: '12m'
max-file: '5'
driver: json-file
補充寫的比較急,貼的鏈結中都有非常完整的資訊,應該都能解決此類問題。
Docker 磁碟佔滿解決方案
2020 11 16 發現線上服務訪問不了報以下錯誤 登入伺服器df h 檢視docker的overlay已用 100 然後查詢 linux 系統最大的10個檔案 find type f print0 xargs 0 du sort n tail 10 cut f2 xargs i du sh 找出...
Docker容器磁碟滿了
容器磁碟空間擴容 登入節點vi etc docker daemon.json 檔案,增加一條 dm.basesize 15g 如下截圖所示 然後重啟docker systemctl restart docker注意 節點資料盤 docker專用 在evs介面擴容docker盤。登入目標節點。然後在節...
Docker 進入容器的幾種方式
進入docker容器比較常見的幾種做法如下 docker提供了attach命令來進入docker容器。接下來我們建立乙個守護態的docker容器,然後使用docker attach命令進入該容器。sudo docker run itd ubuntu 14.04 bin bash 然後我們使用dock...