镜像基础操作
Docker 镜像的拉取、查看、删除等基础操作
📋 目录
镜像拉取
docker pull
从仓库拉取镜像。
# 拉取最新版本
docker pull nginx
# 拉取指定版本
docker pull nginx:1.21
docker pull ubuntu:20.04
# 拉取指定仓库的镜像
docker pull registry.example.com/myapp:latest
# 拉取所有标签
docker pull -a nginx拉取进度说明
Pulling fs layer:正在下载文件系统层Downloading:正在下载层数据Extracting:正在解压层数据Pull complete:拉取完成
镜像查看
docker images / docker image ls
列出本地镜像。
# 列出所有镜像
docker images
# 列出所有镜像(包括中间层)
docker images -a
# 只显示镜像 ID
docker images -q
# 按格式输出
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"
# 过滤镜像
docker images nginx
docker images nginx:1.21
docker images --filter "dangling=true" # 显示悬空镜像
docker images --filter "before=nginx:1.20" # 显示指定镜像之前的镜像输出字段说明
- REPOSITORY:镜像仓库名
- TAG:镜像标签
- IMAGE ID:镜像 ID(SHA256 摘要的前12位)
- CREATED:创建时间
- SIZE:镜像大小
镜像删除
docker rmi / docker image rm
删除镜像。
# 删除单个镜像
docker rmi nginx:1.21
# 删除多个镜像
docker rmi nginx:1.21 nginx:1.20
# 通过镜像 ID 删除
docker rmi abc123def456
# 强制删除(即使有容器使用)
docker rmi -f nginx:1.21
# 删除所有未使用的镜像
docker image prune
# 删除所有未使用的镜像(包括有标签的)
docker image prune -a
# 删除所有悬空镜像
docker image prune -f删除前检查
# 查看哪些容器使用了该镜像
docker ps -a --filter ancestor=nginx:1.21
# 先删除使用该镜像的容器
docker rm $(docker ps -a -q --filter ancestor=nginx:1.21)镜像标签管理
docker tag
给镜像打标签。
# 创建新标签(指向同一镜像)
docker tag nginx:latest nginx:1.21
# 标记镜像准备推送到仓库
docker tag myapp:latest username/myapp:v1.0
docker tag myapp:latest registry.example.com/myapp:latest
# 查看镜像的所有标签
docker images myapp标签命名规范
[仓库地址/][用户名/]镜像名[:标签]
示例:
nginx:latest- Docker Hub 官方镜像username/myapp:v1.0- 用户自定义镜像registry.example.com/project/app:latest- 私有仓库镜像
镜像导出与导入
docker save
导出镜像到文件。
# 导出单个镜像
docker save -o nginx.tar nginx:latest
# 导出多个镜像
docker save -o images.tar nginx:latest ubuntu:20.04
# 使用 gzip 压缩
docker save nginx:latest | gzip > nginx.tar.gzdocker load
从文件导入镜像。
# 从文件导入镜像
docker load -i nginx.tar
# 从标准输入导入
docker load < nginx.tar
# 从压缩文件导入
gunzip -c nginx.tar.gz | docker load使用场景
- 离线环境:在没有网络的环境中部署镜像
- 镜像备份:备份重要镜像
- 镜像迁移:在不同环境间迁移镜像
镜像详细信息
docker inspect
查看镜像详细信息。
# 查看镜像详细信息
docker inspect nginx:latest
# 查看特定信息
docker inspect -f '{{.Config.Env}}' nginx:latest
docker inspect -f '{{.Config.Cmd}}' nginx:latest
docker inspect -f '{{.Created}}' nginx:latest
docker inspect -f '{{.Size}}' nginx:latest
# 查看镜像的层信息
docker inspect -f '{{.RootFS.Layers}}' nginx:latestdocker history
查看镜像构建历史。
# 查看镜像构建历史
docker history nginx:latest
# 不截断输出
docker history --no-trunc nginx:latest
# 按格式输出
docker history --format "table {{.ID}}\t{{.CreatedBy}}\t{{.Size}}" nginx:latestdocker image inspect
查看镜像详细信息(新命令格式)。
# 查看镜像详细信息
docker image inspect nginx:latest
# 查看镜像大小
docker image inspect nginx:latest --format '{{.Size}}'镜像搜索
docker search
在 Docker Hub 搜索镜像。
# 搜索镜像
docker search nginx
# 限制搜索结果数量
docker search --limit 5 nginx
# 只显示官方镜像
docker search --filter "is-official=true" nginx
# 只显示自动构建的镜像
docker search --filter "is-automated=true" nginx镜像清理
清理未使用的镜像
# 删除所有悬空镜像
docker image prune
# 删除所有未使用的镜像(包括有标签的)
docker image prune -a
# 删除指定时间之前的镜像
docker image prune -a --filter "until=24h"
# 交互式删除
docker image prune -a --filter "until=24h" --interactive查看镜像占用空间
# 查看镜像占用空间
docker system df
# 详细查看镜像占用空间
docker system df -v实用技巧
批量操作
# 批量删除镜像
docker rmi $(docker images -q)
# 批量删除特定仓库的镜像
docker rmi $(docker images -q nginx)
# 批量导出镜像
for image in $(docker images -q); do
docker save -o ${image}.tar ${image}
done镜像大小优化
# 查看镜像各层大小
docker history --human nginx:latest
# 比较镜像大小
docker images --format "{{.Repository}}:{{.Tag}} - {{.Size}}"