docker pull busybox:musl
docker tag busybox:musl busybox:stable
mkdir -p /tmp/busybox
cd /tmp/busybox
echo 'FROM busybox:stable' > /tmp/busybox/Dockerfile
echo 'RUN touch /tmp/test' >> /tmp/busybox/Dockerfile
docker build -t busybox:test /tmp/busybox
docker pull busybox:stable
docker build -t busybox:test /tmp/busybox
docker images -f "dangling=true"
docker run -d --rm --name busybox busybox:test /bin/sh -c "/bin/sleep 3600"
docker exec -it busybox /bin/sh -c 'dd if=/dev/zero of=./test.zip count=1024 bs=1M'
docker system df | grep Containers
docker run -d --name busybox2 busybox:test /bin/sh -c "/bin/sleep 1"
docker ps -a | grep Exited
docker run -d --rm --name busybox3 busybox:test /bin/sh -c "/bin/sleep 3600"
docker pause busybox3
docker ps -a | grep Paused
docker volume create volume-test1
docker volume ls -f dangling=true
docker info | grep Root
docker system df
docker system df 列出了 docker 使用磁盘的 4 种类型:
类型 | 描述 |
---|---|
Images | 所有镜像占用的空间(包括拉取的镜像、本地构建的镜像) |
Containers | 运行中的容器所占用的空间(没运行就不占空间) |
Local Volumes | 本地数据卷的空间 |
Build Cache | 镜像构建过程产生的缓存数据 |
docker system df -v
注:docker system df -v 看到的容器大小,有可能比实际的小很多。比如 df -v 看到某容器大小43G,但该容器对应的 overlay2/xxx/diff 和 merge 加一起却有82G。
docker inspect busybox | grep overlay2
docker volume ls
find /var/lib/docker/containers/ -name *-json.log
find /var/lib/docker -type f -size +100M -print0 | xargs -0 du -h | sort -nr
du -sh /var/lib/docker/overlay2/* | grep [GT] | sort -nr
docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}' | grep xxx
docker exec -it busybox /bin/sh -c 'du -sh /*'
1.find /var/lib/docker/containers/ -name *-json.log
2.# bash -c "echo > /var/lib/docker/containers/xxx-json.log"
find /var/lib/docker -type f -size +100M -print0 | xargs -0 du -h | sort -nr
# rm -f xxx
#docker stop $(docker ps -a | grep "Paused" | awk '{print $1 }')
docker stop $(docker ps -a | egrep "(mysql|zabbix)" | awk '{print $1}')
#docker stop $(docker ps -a -q)
docker rm $(docker ps -a | grep "Exited" | awk '{print $1 }')
删除 特定|所有 的容器
# docker rm $(docker ps -a | egrep "(mysql|zabbix)" | awk '{print $1}')
# docker rm $(docker ps -a -q)
注1:若REPOSITORY正常、TAG为,只是说明该镜像没有正常打标签,不可轻易删除。
注2:如果正在运行的容器使用了悬空镜像 ,那么删除此镜像就会报错:Error response from daemon: conflict: unable to delete 77bb919cd617 (cannot be forced) - image is being used by running container 48c2f4b4f4af。 若确认依赖的容器已不在使用,停掉此容器再次删除悬空镜像就不会报错了。
docker rmi $(docker images | grep "^" | awk '{print $3}')
docker rmi $(docker images -qf dangling=true)
docker rmi -f $(docker images | egrep "(mysql|zabbix|mariadb)" | awk '{print $3}')
docker volume rm $(docker volume ls -qf dangling=true)
docker volume prune
# docker network rm $(docker network ls -q)
docker images -qf dangling=true #.悬空的镜像
docker ps -a | grep Exited #.已关闭的容器
docker system prune
docker system prune -a
docker pull nginx:latest
docker run -itd --name nginx1 -p 8001:80 nginx:latest /bin/bash
docker exec -it nginx1 /bin/bash -c 'df -Th | grep overlay'
docker run -itd --name nginx2 -p 8002:80 --memory=2G --storage-opt size=100G nginx:latest /bin/bash
docker exec -it nginx2 /bin/bash -c 'df -Th | grep overlay'
mkdir -p /data/docker
systemctl stop docker
rsync -avz /var/lib/docker/ /data/docker
mv /var/lib/docker /var/lib/docker.bak
echo '{"data-root":"/data/docker"}' > /etc/docker/daemon.json
systemctl restart docker
docker info | grep Root
#.执行 docker info 若返回 Docker Root Dir: /data/docker 则表示docker根目录修改成功
#!/bin/bash
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
do
cat /dev/null > $log
done