Docker Commands

前言

docker host的硬碟滿了所以才想紀錄一下一些docker指令來騰出空間

Basic Commands

基本上都是docker開頭的指令

  • docker ps - 看跑哪些docker containers
  • docker volume 系列 - 這是管理docker volume相關的指令
  • docker network 系列 - 這是管理docker network的
  • docker system 系列 - 也是一些docker管理用的

其實大多數的指令都可以用portainer的GUI來替代
只有清理空間的相關指令比較常會用到

清理空間相關指令

清理沒用東西的萬用指令

1
[root]$> docker system prune -a

這個指令會把所有沒有正在跑得container以及沒用的volume/network全數清掉
使用前要先注意一下以免把所有的一切都清掉了

看佔空間的是什麼東西 - du

基本上會使用du -ahx | sort -rh | head -n 30把目錄下的前30大檔案/檔案夾列出來
有時候會有恐怖的驚喜 - 例如高達77G的json log file

清空巨大json log file

利用truncate指令把json file歸零

1
[root]$> truncate -s 0 /var/lib/docker/container/<Container_UUID>/<Container_ID>.json

限制Log大小

在docker-compose.yml中限制log大小

1
2
3
4
5
6
7
8
# 限制某個service的log檔最大為5M
----------------------------------
service:
....
logging:
driver: "json-file"
option:
max-size: "5M"

然後要重跑docker-compose up -d

全局設定

1
2
3
4
5
6
7
8
# /etc/docker/daemon.json
----------------------------------
{
"log-driver":"json-file",
"log-opts":{
"max-size" :"50m","max-file":"1"
}
}

然後重啟docker.service

1
2
[root]$> systemctl daemon-reload
[root]$> systemctl restart docker.service

但是只對未來新建的有效所以每一個container都需要重建才會生效