Docker Commands
常用 Docker 命令记录
镜像
镜像列表按照大小排序
docker images --format "{{.ID}}\t{{.Size}}\t{{.Repository}}" | sort -k 2 -h
删除所有镜像
docker rmi -f $(docker images | awk '{print $3}')
删除所有 dangling 镜像
docker rmi -f $(docker images -a | grep "<none>" | awk '{print $3}')
导出镜像
docker save -o postgres_9.6.tar postgres:9.6
docker save postgres:9.6 | gzip > postgres_9.6.tar
导入镜像
docker load -i postgres_9.6.tar
容器
删除所有 Exited
容器
docker rm $(docker ps -a | grep Exited | awk '{print $1}')
停止并删除所有容器
docker stop $(docker ps | awk '{print $1}')
docker rm -f $(docker ps -a | awk '{print $1}')
停止 dead 容器
删除实例时提示 device or resource busy
[root@jenkins233 ~]# docker rm 0d5871af9e3b
Error response from daemon: driver "overlay" failed to remove root filesystem for 0d5871af9e3be63589da2b6fbdd0cc112ac88bbc2b9a65372137e72acb06420d: remove /var/lib/docker/overlay/9fb10812222a3ba935dbedd2c9d83ad02d2bbb34cae10665d1b6b7bd52a9409b/merged: device or resource busy
查看那个进程占用设备
grep docker /proc/*/mountinfo | grep overlay
然后杀死进程
进入容器
登录到容器内部
docker exec -it <CONTAINER> bash
已 root 身份登录容器内部
docker exec -u 0 -it <CONTAINER> bash
数据卷
删除所有 dangling 数据卷
docker volume rm $(docker volume ls -qf dangling=true)
删除所有数据卷
docker volume rm $(docker volume ls | awk '{print $2}')
删除前 1000 个数据卷
docker volume rm $(docker volume ls | awk '{print $2}' | head -1000)
网络
删除所有网络
docker network rm $(docker network ls | awk '{print $1}')
创建容器网络
docker network create nc-network
断开容器与网络的连接
docker network inspect {network}
docker network disconnect -f {network} {endpoint-name}
显示所有容器 IP 地址
docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
重建 Docker0
pkill docker
iptables -t filter -F
iptables -t filter -X
iptables -t nat -F
iptables -t nat -X
ifconfig docker0 down
ip link del docker0
systemctl restart docker
系统
资源占用查看
docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 29 0 9.786GB 9.786GB (100%)
Containers 0 0 0B 0B
Local Volumes 83 0 11.99GB 11.99GB (100%)
Build Cache 0 0 0B 0B
镜像占用了 9.786GB,容器占用 0,数据卷占用 11.99GB
清理
清理构建缓存
docker builder prune
删除不再使用的数据卷
docker volume prune
批量清理
移除所有停止的容器,移除所有未使用的网络,移除所有悬空的镜像,移除所有悬空的构建缓存
docker system prune
深度批量清理
清理得更加彻底,可以将没有容器使用 Docker镜像都删掉
docker system prune -a