1.检查本地镜像

  1. docker image ls

2.拉取镜像

从官方仓库拉取镜像

  1. docker image pull <repository>:<tag>
  2. repository: 仓库名称
  3. tag: 标签

从第三方镜像仓库中获取镜像

需要在镜像仓库名称前加上第三方镜像仓库服务的DNS名称。

  1. dokcer pull gcr.io/nigelpoulton/tu-demo:v2

拉取仓库中全部镜像

命令中指定 -a 参数来拉取仓库中的全部镜像

  1. docker image pull -a

3.过滤 docker image ls 的输出内容

用 —filter 参数来过滤 docker image ls 命令返回的镜像列表内容

  1. Docker 目前支持如下的过滤器
  2. dangling: 可以指定 true 或者 false, 仅返回悬虚镜像(true), 或者非悬虚镜像(false).
  3. before: 需要镜像名称 或者 ID 作为参数, 返回在之前被创建的全部镜像。
  4. since: before 类似, 不过返回的是指定镜像之后创建的全部镜像。
  5. label: 根据标注 (label) 的名称或者值, 对镜像进行过滤。
  6. 其他过滤方式可以使用 referrence

常用的几种例子

  1. # 完成过滤并且仅显示标签为 latest 的示例
  2. docker image ls --filter=refernce="*:latest"
  3. # 使用--format参数来通过 Go 魔板对输出内容进行格式化。
  4. docker image ls --format "{{.Size}}"
  5. ## 使用下面命令返回全部镜像, 但是只显示仓库、标签和大小信息
  6. docker image ls --format "{{.Repository}}: {{.Tag}}: {{.size}}"

4.通过CLI方式搜索 Docker Hub

通过 docker search [NAME] 的方式来搜索 Docker Hub

  1. [vic@izwz93lmtccp8mvky0xj4uz ~]$ docker search nigelpoulton
  2. NAME DESCRIPTION STARS OFFICIAL AUTOMATED
  3. nigelpoulton/pluralsight-docker-ci Simple web app used in my Pluralsight video 23 [OK]
  4. nigelpoulton/tu-demo Voting web server used for various Pluralsig 12
  5. nigelpoulton/ctr-demo Web server for simple Docker demos 3
  6. nigelpoulton/k8sbook Simple web app used for demos in The Kuberne 2
  7. nigelpoulton/vote Fork of dockersamples Voting App for *Docker 1
  8. nigelpoulton/dockerbook Repo for examples used in Docker Deep Dive b 0
  9. nigelpoulton/msb-hello 0
  10. nigelpoulton/web-fe1 Web front end 0

添加过滤条件
通过 —filter 参数添加过滤条件

  1. # --filter "is-offical=true" 来判断是否是官方镜像
  2. docker search alpine --filter "is-official=true"
  3. # --filter "is-automated=true" 判断是否是自动创建的仓库
  4. docker search alpine --filter "is-automated=true"
  5. # --limit 参数来增加返回内容行数
  6. docker search alpine --filter "is-automated=true" --limit 10

5.镜像和分层

Docker 镜像由一些松耦合的只读镜像层组成。
Docker 负责堆叠这些镜像层, 并且将他们表示为单个统一的对象。

  1. [vic@izwz93lmtccp8mvky0xj4uz ~]$ docker image pull ubuntu:latest
  2. latest: Pulling from library/ubuntu
  3. 3ff22d22a855: Pull complete
  4. e7cb79d19722: Pull complete
  5. 323d0d660b6a: Pull complete
  6. b7f616834fd0: Pull complete
  7. Digest: sha256:5d1d5407f353843ecf8b16524bc5565aa332e9e6a1297c73a92d3e754b8a636d
  8. Status: Downloaded newer image for ubuntu:latest
  9. docker.io/library/ubuntu:latest

通过 docker image inspect 命令

[vic@izwz93lmtccp8mvky0xj4uz ~]$ docker image inspect ubuntu:latest
[
    {
        "Id": "sha256:1e4467b07108685c38297025797890f0492c4ec509212e2e4b4822d367fe6bc8",
        "RepoTags": [
            "ubuntu:latest"
        ],
        <Snip>
         "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:ce30112909569cead47eac188789d0cf95924b166405aa4b71fb500d6e4ae08d",
                "sha256:8eeb4a14bcb4379021c215017c94800a848a8203a8ce76aa1bd211d4c995f792",
                "sha256:a37e74863e723df4ddd599ef1b7d9a68e2301794a8c37c2370f8c2c8993ef72c",
                "sha256:095624243293a7dfdb582f8471d6e2d9d7772dd621bc57906b034c59f388ebac"
            ]
        }
]

6.共享镜像层

多个镜像之间可以并且确实会共享镜像层。

docker image pull -a nigelpoulton/tu-demo

Docker 首先尝试拉取标签为 latest 的镜像。 然后, 当拉取标签为 v1 和 v2 的镜像时, 
Docker 会注意到组成这两个镜像的镜像层,有一部分已经存在了。

7.根据镜像摘要(image digest)拉取镜像

由于镜像标签是可变的。
这意味着可能偶尔出现给镜像打错标签的情况,又是甚至会给新标签打一个已经存在的标签的情况。
获取仓库的镜像摘要

[vic@izwz93lmtccp8mvky0xj4uz ~]$ docker image ls --digests alpine
REPOSITORY          TAG                 DIGEST                                                                    IMAGE ID            CREATED             SIZE
alpine              latest              sha256:185518070891758909c9f839cf4ca393ee977ac378609f700f60a771a2dfe321   1e4467b07108    8 weeks ago         5.57MB

上面代码片段中, Alpine 镜像的签名值如下
sha256:185518070891758909c9f839cf4ca393ee977ac378609f700f60a771a2dfe321

接下来我们来实现通过 镜像摘要拉取镜像

# 首先我们先删除 alpine 这个仓库
docker image rm alpine:latest
# 我们通过 镜像的签名值来下载这个仓库
[vic@izwz93lmtccp8mvky0xj4uz ~]$ docker image pull alpine@sha256:185518070891758909c9f839cf4ca393ee977ac378609f700f60a771a2dfe321
sha256:185518070891758909c9f839cf4ca393ee977ac378609f700f60a771a2dfe321: Pulling from library/alpine
df20fa9351a1: Pull complete 
Digest: sha256:185518070891758909c9f839cf4ca393ee977ac378609f700f60a771a2dfe321
Status: Downloaded newer image for alpine@sha256:185518070891758909c9f839cf4ca393ee977ac378609f700f60a771a2dfe321
docker.io/library/alpine@sha256:185518070891758909c9f839cf4ca393ee977ac378609f700f60a771a2dfe321

8.删除镜像

删除镜像的两种方式
1.通过仓库名+标签的方式删除

docker image rm alpine:latest

2.通过镜像ID来删除

docker image rm 1e4467b07108

如果被删除的镜像上存在运行状态的容器,那么删除操作不会被允许。再次执行删除镜像命令之前,需要停止并删除该镜像相关的全部容器。