Docker Image (镜像) 常见命令

时间:2024-04-15 07:17:34

Docker Image (镜像) 常用命令

docker images

  • 功能:列出本地所有的镜像。如果镜像 ID 相同,但是 Tag 标签不同,也会被当作不同的条目被列出来。

  • 语法:

    docker images [options] [REPOSITORY[:TAG]] 
    
  • 别名:

    docker image ls    # 这个命令属于是镜像的命令,所以说会有一个 image 的标识哈
    docker image list  # 之后我们学习到的容器的命令,就会有一个 container 的标识!
    
  • 参数:

    • -a:列出本地的所有镜像,他只会显示*的镜像层,会过滤掉中间的镜像层。Docker 镜像是分层的,中间镜像层的存在可以 提高重用性,减少磁盘用量,加速 docker 镜像的构建 ,默认这些中间层是不显示的,后续我们会讲到显示这些中间层镜像的命令。
    • –digests:显示镜像的摘要信息。
    • -f–fliter:显示满足条件的所有镜像。
    • –format:指定返回值的模板文件。
    • –no-trunc:显示完整的镜像信息,不截断输出。
    • -q:只显示镜像的 ID。
  • 演示:

    如下图:我们使用 docker images -a 命令列出了本地的所有镜像,我们能看到镜像的名字,镜像的 Tag,镜像的 IMAGE ID,镜像创建的时间,以及镜像的大小哈!

    img


    如下图:我们使用 docker images --digests 就能看到我们在拉取镜像时,可能会用到的 DIGESTS 值。

    img


    如下图:我们使用 docker images --format json 就可以将输出的结果格式化成 json 的格式。具体格式化出来的格式支持自定义,大家可以去官网学习!

    img


如下图:我们使用 docker images -q 命令,就只能看到镜像的 ID,不能毫无用处,只能说一点用没有。奥,不对,在删除镜像的时候可能会用到。

img

docker tag

  • 功能:创建引用 SOURCE_IMAGE 的标签 TARGET_IMAGE,就相当于取别名,在使用 docker pull 命令的时候就需要使用 docker tag 给镜像取别名,然后 pull 到指定的仓库。

  • 语法:

    docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
    
  • 别名:

    docker image tag
    
  • 演示:

    如下图:我们使用 docker tag centos:centos7centos:centos7 这个镜像取别名,然后就会在本地创建引用 SOURCE_IMAGE 的镜像,因为他们的 IMAGE ID 都是一样的。

    当然我们使用 docker tag IMAGE_ID 也可以,docker tag eeb6ee3f44bd centos:v5

    img

docker image inspect

  • 功能:列出一个或者多个镜像的详细信息。

  • 语法:

    docker image inspect [OPTIONS] IMAGE [IMAGE ...] 
    
  • 参数:

    • -f–format :以指定格式输出。
  • 演示:

    如下图:我们使用 docker iamge inspect 查看一个镜像的详细信息,我们能看到 Tag,DIGESTS,创建时间等,可以看到有一个 Layers,它显示镜像的所有层,构成了整个镜像的文件系统,是镜像中实际存在的层。可以对比等会讲的 docker history 命令。

    img

docker history

  • 功能:显示镜像的历史。

  • 语法:

    docker history [OPTIONS] IMAGE
    
  • 别名

    docker image history
    
  • 参数:

    • -H–human :以人易读的方式显示大小和日期。默认应该是带了这个选项的。
    • –no-trunc :显示全部信息,不截断。
    • -q–quiet :只显示镜像 ID。
  • 演示:

    如下图:我们使用 docker history nginx:1.25.4 查看 nginx 这个镜像的历史。我们看到结果也显示出来了分层信息。这里的分层是什么呢?它显示的是镜像的构建历史,它记录了构建镜像时执行的每个步骤和创建的层。这些步骤通常对应于 Dockerfile 中的指令,例如 RUNCOPYADD 等。history 命令主要关注于这些构建步骤,而不是镜像中的每一个物理层。此外,Dockerfile 中的某些指令可能会创建多个内部层,但这些内部层在最终镜像中可能被合并为一个层,这会导致 docker image historydocker image inspect 看到的层数不同。

    img

docker pull

参考镜像仓库的命令。

docker push

参考镜像仓库的命令。

docker rmi

  • 功能:删除一个或者多个镜像。

  • 语法:

    docker rmi [OPTIONS] IMAGE [IMAGE ...]
    
  • 别名:

    docker image rm
    docker image remove
    
  • 参数:

    • -f :强制删除镜像。正在运行的容器镜像是无法删除的,除非使用 -f 选项。
  • 演示:

    如下图:在我的本地镜像中,有多个 IMAGE ID 为 eeb6ee3f44bd 的镜像标签,当 docker rmi 的不是最后的那个标签,只会进行 Untagged 的操作,只有当删除的是最后一个标签才会把这个镜像从本地删除。

    img


如果我们使用 docker rmi IMAGE ID 删除镜像的时候,如果这个镜像被多个 Tag 关联,是不能直接删除这个镜像的!除非加上 -f 选项,这会将所有 Tag 解除关联,并删除镜像!

img


如下图:我们无法删除正在运行的容器镜像。但是可以加上 -f 选项,删除已经停止的容器镜像。

img

docker save

  • 功能:将一个或者多个镜像保存成为 tar 归档文件。

  • 语法:

    docker save [OPTIONS] IMAGE [IMAGE ...]
    
  • 别名

    docker image save
    
  • 参数:

    • -o–output:输出到的目标文件。
  • 演示:

    如下图:我们将 nginx 这个镜像 保存成为 tar 文件。我们将来就可以使用 docker load 命令将这个文件导出为镜像。这两个命令常用于由于环境限制无法在镜像网站拉取镜像的时候。

    img

docker load

  • 功能:从 tar 归档文件中加载镜像。也可以从标准输入 STDIN 中加载!

  • 语法:

    docker load [OPTIONS]
    
  • 别名:

    docker image load
    
  • 参数:

    • –input-i :指定导入的文件,加上该选项就会替代 STDIN。
    • –quiet-q:精简输出信息。
  • 演示:

    如下图:原来本地是没有 nginx 这个镜像的,通过 docker load 从刚才 docker save 形成的 tar 文件中加载镜像!

    img


从标准输入加载镜像可以这么写:

docker load < test_docker_save.tar.gz

docker image prune

  • 功能:删除没有使用过的镜像。

  • 语法:

    docker image prune [OPTINONS]
    
  • 参数:

    • -a-all :删除全部不使用的镜像。
    • –filter :指定过滤条件。
    • -f–force :不提示是否删除。
  • 演示:

    如下图:我的本地有两个镜像:nginx 和 busybox,其中 busybox 镜像被一个容器引用!然后我们通过 docker image prune -a 删除所有未被使用的镜像!因为我们没有加上 -f 选项,就会让我们确认是否删除,输入 y 之后成功将未被使用的 nginx 镜像删除啦!

    img

docker import

这个命令暂时没法讲,我们在讲解 docker 容器命令的时候需要和 docker export 命令一起讲。

docker build

这个命令也没法讲,我们在讲镜像制作的时候讲解!