Docker命令-docker常用命令

docker常用命令
注意部分命令为高危命令,请慎重使用

docker清理命令

以下命令为高危命令,请慎重使用

容器清理

1
2
3
4
5
6
7
8
9
10
11
# 停止所有容器,两条命令等同
docker stop $(docker ps -aq)
docker ps -aq |xargs docker stop
# 删除所有容器,两条命令等同
docker rm $(docker ps -q)
docker ps -aq |xargs docker rm
# 删除所有关闭的容器
docker rm $(docker ps -aq -f status=exited)
# 删除异常状态容器
docker ps -a |grep Exited | awk '{print $1}'|xargs docker rm
docker ps -a |grep Created | awk '{print $1}'|xargs docker rm

镜像清理

1
2
3
4
5
6
7
# 删除所有镜像
docker rmi $(docker images -q)
# 删除 dangling images
docker image prune
# 删除没用的镜像,按需更改关键字test
docker images|grep none|awk '{print $3}'|xargs docker rmi
docker images|grep test|awk '{print $3}'|xargs docker rmi

挂载清理

1
2
# 删除 dangling volmue
docker volume rm $(docker volume ls -qf dangling=true)

磁盘清理

1
docker system prune

docker彻底删除未使用的容器和镜像

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 36 21 7.412GB 3.798GB (51%)
Containers 69 35 460.8MB 460.4MB (99%)
Local Volumes 8 8 141.8MB 0B (0%)
Build Cache 0 0 0B 0B
$ docker ps -a | grep Exited | wc -l
33
$ docker ps | wc -l
36
$ docker images | wc -l
38
$ docker container prune
$ docker image prune
$ docker system prune
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all dangling images
- all dangling build cache
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 36 17 7.412GB 5.204GB (70%)
Containers 36 35 354.6kB 0B (0%)
Local Volumes 8 5 141.8MB 771.3kB (0%)
Build Cache 0 0 0B 0B

docker镜像的导出和导入

通过save导出和load导入的镜像信息应该是完全一致的才对,如tag和images id都是一致的,否则报错。
注意与其他两个命令export和import的区别,不要混用。详情参考 https://www.cnblogs.com/mswei/p/10365226.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 导出镜像,支持同时导出多个镜像
docker save -o images.tar image1:tag [image2:tag ...]
# 导入镜像
docker load -i images.tar

# 导出容器,只能导出单个容器
docker export -o container1.tar container1
# 导入容器
docker import -i container1.tar

# 导出镜像并压缩
docker save nginx:1.20.1 | gzip > nginx_1.20.1.tar.gz

# 导入压缩的镜像包
gunzip -c nginx_1.20.1.tar.gz | docker load
# 或者解压后再导入
tar -zxf nginx_1.20.1.tar.gz
docker load -i nginx_1.20.1.tar

# 打包所有镜像,两条命令等同
docker save $(docker images --format "{{.Repository}}:{{.Tag}}" |tr '\n' ' ') -o k8s-images.tar
docker save $(docker images | grep -v REPOSITORY | awk 'BEGIN{OFS=":";ORS=" "}{print $1,$2}') -o k8s-images.tar

# 打包指定前缀的镜像,两条命令等同
docker save $(docker images --format "{{.Repository}}:{{.Tag}}" rancher/* |tr '\n' ' ') -o rancher-images.tar
docker save $(docker images rancher/* | grep -v REPOSITORY | awk 'BEGIN{OFS=":";ORS=" "}{print $1,$2}') -o rancher-images.tar

临时退出docker命令行但不关闭,快捷键ctrl+p+q