镜像管理

搜索镜像

docker search <image_name>|<image_id>

# 搜索名称为 redis 的docker镜像:
# docker search redis

# -f 过滤输出内容
#    is-official=true 过滤官方镜像
#    stars=30 过滤收藏超过30次的镜像
#
#    案例:docker search -f is-official=true redis

# --limit 限制输出结果的个数
#    案例:docker search --limit 5 redis

# --no-trunc 不截断输出信息(显示完整信息)

拉取镜像

docker pull busybox

# 拉取名称为 busybox 的docker镜像
# 默认拉取最新版本
# 推送为 push


docker pull busybox:1.29

# 拉取指定版本的doker镜像
# 版本需要去官网查看,hub.docker.com

拉取不同架构的镜像

docker pull --platform linux/amd64 docker:dind

查看镜像

# 查看本地有哪些镜像

docker image ls

# -a 列出所有镜像(含临时文件)
# -l 只显示镜像短ID
# --digests 列出更全的镜像信息


# 查看指定镜像的详细信息
docker image inspect <image_name>|<image_id>
# -f '{{.xx}}' 获取指定xx字段信息


# 查看指定镜像的构建历史信息
docker image history <image_name>|<image_id>

导出镜像

docker image save -o docker_busybox1.29.tar busybox:1.29

# 导出版本号为1.29的busybox镜像到本地目录,导出名称为docker_busybox1.29.tar
# -o 指定导出路径
# 支持将多个镜像打包到一个包中,镜像名称或ID之间用空格隔开

导出不同架构的镜像

docker save  --platform linux/amd64 docker:dind | gzip > ~/Desktop/dind.tgz

导出多个镜像

docker save -o /opt/nginx.tar nginx:1.19.7 nginx:1.19.8 nginx:1.19.9

# 导出后大小
# 393M nginx.tar

导出多个镜像并压缩之gzip

docker save -o /opt/nginx.tar nginx:1.19.7 nginx:1.19.8 nginx:1.19.9 && gzip -c nginx.tar > nginx.tar.gz
# 简写为
docker save nginx:1.19.7 nginx:1.19.8 nginx:1.19.9 | gzip > /opt/nginx.tar.gz

# 导出后大小
# 149M nginx.tar.gz

导出多个镜像并压缩之rar

docker save -o nginx.tar nginx:1.19.7 nginx:1.19.8 nginx:1.19.9 && rar a nginx.rar nginx.tar > /dev/null

# 导出后大小
# 100M nginx.rar

# rar需要下载软件,官网为:https://www.rarlab.com
# 直接下载地址:
# https://www.rarlab.com/rar/rarlinux-x64-6.0.0.tar.gz


# 直接使用rar命令需要导出环境变量或者复制到环境变量路径下
# 以下载解压后目录为/opt/rar为例
# 导出环境变量命令如下:
# export PATH=$PATH:/opt/rar/
# 复制命令如下:
# cp /opt/rar /opt/unrar /usr/local/bin

导入镜像

docker image load -i docker_busybox1.29.tar

# 导入当前目录下名称为docker_busybox1.29.tar的镜像
# -i 指定镜像文件路径

# import 导入会丢掉镜像的标签,所以一般用 load 命令导入

批量导入镜像

ls -lh *.tar.gz | awk '{print $NF}' | sed -r 's#(.*)#docker load -i \1#' | bash

# 批量导入当前目录下tar.gz格式的镜像

删除镜像

docker image rm <image_name>|<image_id>
# 删除指定版本的docker镜像,不接版本默认删除最新版
# 案例:docker image rm busybox:1.29

docker image prune
# 清理未使用的镜像(删除所有未使用的镜像)
# -a 删除所有未使用的镜像,而不仅仅是悬空的镜像
# -f 不提示确认直接删除

Last updated