5. 删除本机镜像
如果有不用的镜像,可以使用 docker rmi 命令在本地删除镜像,以减少磁盘占用空间。
docker rmi 命令
命令格式
docker rmi <镜像ID1> <镜像ID2> ...
# 或
docker rmi <镜像名1[:标签名1]> <镜像名2[:标签名2]> ...
命令别名:
docker image rm,docker image remove。
如果不给出 标签名 默认为 latest 标签。
docker rmi 常用选项
-f 或 --force示例
weimingze@mzstudio:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest edbdd97bf78b 2 months ago 859MB
ubuntu 24.04 602eb6fb314b 2 months ago 78.1MB
weimingze@mzstudio:~$ sudo docker rmi ubuntu:24.04
Untagged: ubuntu:24.04
Deleted: sha256:602eb6fb314b5fafad376a32ab55194e535e533dec6552f82b70d7ac0e554b1c
Deleted: sha256:3abdd8a5e7a8909e1509f1d36dcc8b85a0f95c68a69e6d86c6e9e3c1059d44b3
weimingze@mzstudio:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest edbdd97bf78b 2 months ago 859MB
weimingze@mzstudio:~$ sudo docker rmi edbdd97bf78b
Untagged: mysql:latest
Deleted: sha256:edbdd97bf78b4338bbb96fa1348c8743a328b97ea3290b20adcab25bc17637de
Deleted: sha256:5ee46883cd23ccea0c130113edfca5ef2b202eb1866c6a0e868fc1f556755c75
Deleted: sha256:cc7bc92145face1c727f2014d0341f21d18247e0c7df0543e2d6ac020a6dbdbc
Deleted: sha256:a0229cd926f7a0e0afeea987e0b9d4419964e02d6d84330aee7615863687deb0
Deleted: sha256:54366fcda8e9d2e5cd0f3452adb3b2ab34c6216aa73e24889cbdcdb15788f399
Deleted: sha256:c3e04f405b930b3c39ffeeaa9583e72d1f007fc3d6a208a894ac8c793f02fa84
Deleted: sha256:8ec93f6326350a63a5858a425afcd3028ed2dcc6303784c51359b48c032916ad
Deleted: sha256:24882858314385467bf296310805d4b7229bff39c29ed9a434689adc37543291
Deleted: sha256:35caa70a7a17d9478f62ffd10c7fe27493877644fdbe82d181bc5bb93e8e0f62
Deleted: sha256:c222c78b1ef751569013c1ec5a3ad2b5a8254b3600920aaaf358e0b32872bf23
Deleted: sha256:825f4932222fe8e4ee14d896e0f324da04fb8420e5335f3ee039f32fa47e5ee3
weimingze@mzstudio:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
weimingze@mzstudio:~$
删除所有镜像
组合使用 docker images -q 和 docker rmi 可以删除所有镜像。
sudo docker rmi $(sudo docker images -q)
示例
weimingze@mzstudio:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest edbdd97bf78b 2 months ago 859MB
ubuntu 24.04 602eb6fb314b 2 months ago 78.1MB
weimingze@mzstudio:~$ sudo docker images -q
edbdd97bf78b
602eb6fb314b
weimingze@mzstudio:~$ sudo docker rmi $(sudo docker images -q)
Untagged: mysql:latest
Deleted: sha256:edbdd97bf78b4338bbb96fa1348c8743a328b97ea3290b20adcab25bc17637de
Deleted: sha256:5ee46883cd23ccea0c130113edfca5ef2b202eb1866c6a0e868fc1f556755c75
Deleted: sha256:cc7bc92145face1c727f2014d0341f21d18247e0c7df0543e2d6ac020a6dbdbc
Deleted: sha256:a0229cd926f7a0e0afeea987e0b9d4419964e02d6d84330aee7615863687deb0
Deleted: sha256:54366fcda8e9d2e5cd0f3452adb3b2ab34c6216aa73e24889cbdcdb15788f399
Deleted: sha256:c3e04f405b930b3c39ffeeaa9583e72d1f007fc3d6a208a894ac8c793f02fa84
Deleted: sha256:8ec93f6326350a63a5858a425afcd3028ed2dcc6303784c51359b48c032916ad
Deleted: sha256:24882858314385467bf296310805d4b7229bff39c29ed9a434689adc37543291
Deleted: sha256:35caa70a7a17d9478f62ffd10c7fe27493877644fdbe82d181bc5bb93e8e0f62
Deleted: sha256:c222c78b1ef751569013c1ec5a3ad2b5a8254b3600920aaaf358e0b32872bf23
Deleted: sha256:825f4932222fe8e4ee14d896e0f324da04fb8420e5335f3ee039f32fa47e5ee3
Untagged: ubuntu:24.04
Deleted: sha256:602eb6fb314b5fafad376a32ab55194e535e533dec6552f82b70d7ac0e554b1c
Deleted: sha256:3abdd8a5e7a8909e1509f1d36dcc8b85a0f95c68a69e6d86c6e9e3c1059d44b3
weimingze@mzstudio:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
清理无用镜像
docker image prune 命令用于 清理未被使用的 Docker 镜像(悬空镜像或未被容器引用的镜像)。以减少多磁盘空间的占用。
术语
未被容器引用的镜像 是指有标签等信息,但未创建容器。
悬空镜像 (dangling images) 通常是创建过程中产生的中间层镜,他没有标签,通常标签为 <none>:<none>,他无法创建容器。
docker image prune 命令
命令格式
docker image prune [选项]
如果不给出选项,默认删除 悬空镜像 (dangling images)。
docker image prune 命令的常用选项
-a 或 --all-f 或 --force示例
weimingze@mzstudio:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest edbdd97bf78b 2 months ago 859MB
ubuntu 24.04 602eb6fb314b 2 months ago 78.1MB
weimingze@mzstudio:~$ sudo docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B
weimingze@mzstudio:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest edbdd97bf78b 2 months ago 859MB
ubuntu 24.04 602eb6fb314b 2 months ago 78.1MB
weimingze@mzstudio:~$ sudo docker image prune -a
WARNING! This will remove all images without at least one container associated to them.
Are you sure you want to continue? [y/N] y
Deleted Images:
untagged: ubuntu:24.04
deleted: sha256:602eb6fb314b5fafad376a32ab55194e535e533dec6552f82b70d7ac0e554b1c
deleted: sha256:3abdd8a5e7a8909e1509f1d36dcc8b85a0f95c68a69e6d86c6e9e3c1059d44b3
Total reclaimed space: 78.1MB
weimingze@mzstudio:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest edbdd97bf78b 2 months ago 859MB
weimingze@mzstudio:~$
从上述示例可以看出,这里没有悬空镜像,因此 sudo docker image prune 没有删除任何镜像。
在上述三个镜像中,ubuntu 没有创建容器。因此 sudo docker image prune -a 删除了 ubuntu 镜像,保留了 mysql 镜像。
查看镜像磁盘占用
使用 docker system df 命令可以查看当前镜像和容器占用系统磁盘的空间。
docker system df 命令
命令格式
docker system df
示例
weimingze@mzstudio:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest edbdd97bf78b 2 months ago 859MB
weimingze@mzstudio:~$ sudo docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 1 1 859.4MB 0B (0%)
Containers 1 1 6B 0B (0%)
Local Volumes 4 0 627.3MB 627.3MB (100%)
Build Cache 0 0 0B 0B
可见当前有个镜像(Image) 占用 859.4MB;容器(Containers) 1 个,正在运行(ACTIVE:1),占用磁盘空间 6B;本地卷占用 627.3MB;缓存没有占用磁盘空间。