- 查看现有镜像
bash
# 列出所有镜像
docker images
# 输出示例:
REPOSITORY TAG IMAGE ID CREATED SIZE
chaitin/safeline-mgt-api latest 68f38ece5d03 2 years ago 595MB
chaitin/safeline-mario latest f15fa779a859 2 years ago 198MB
chaitin/safeline-detector latest fad15e0fecbe 2 years ago 234MB
postgres 15.2 bf700010ce28 3 years ago 379MB
redis 7.0.10 33e3db53b328 3 years ago 117MB
- 删除镜像
bash
# 根据IMAGE ID删除
docker rmi 68f38ece5d03
# 或根据REPOSITORY:TAG删除
docker rmi chaitin/safeline-mgt-api:latest
3.常见错误及解决方案
错误1:镜像被容器使用
vbnet
Error response from daemon: conflict: unable to delete 68f38ece5d03 (cannot be forced) - image is being used by running container a0ae66de022d
解决方案:
ini
# 方案1:先删除使用该镜像的容器
docker rm 容器ID
# 方案2:强制删除镜像
docker rmi -f 镜像ID
# 方案3:查看哪些容器在使用该镜像
docker ps -a --filter ancestor=镜像名
错误2:权限不足
bash
# 使用sudo执行(如果在Linux系统中)
sudo docker rmi 镜像ID
实用技巧
清理所有无用镜像
arduino
# 删除所有未使用的镜像(推荐)
docker image prune
# 强制删除所有未使用的镜像(不询问)
docker image prune -a -f
结合条件删除
perl
# 删除特定模式的镜像
docker images | grep "pattern" | awk '{print $3}' | xargs docker rmi
# 删除创建时间超过24小时的镜像
docker images --format "{{.ID}} {{.CreatedAt}}" | grep "24 hours" | awk '{print $1}' | xargs docker rmi
常用选项说明
| 选项 | 说明 |
|---|---|
-f, --force |
强制删除镜像(即使有容器依赖) |
--no-prune |
不删除未打标签的父镜像 |
注意事项
- 数据备份:删除前确认镜像不再需要,或已推送到镜像仓库
- 依赖关系:确保没有容器(包括停止的容器)依赖该镜像
- 标签问题:同一个镜像ID可能有多个标签,删除标签不等于删除镜像层
- 磁盘空间 :删除后可以使用
docker system df查看释放的磁盘空间
如果需要更详细的帮助,可以查看官方文档:
bash
docker rmi --help