Docker-镜像使用

镜像image是Docker架构的三个基本概念之一,就相当于是一个root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套Ubuntu16.04最小系统的 root文件系统。

1、常用命令

  • images: 列出本地主机上的所有镜像
  • search:查找远程仓库镜像
  • pull:从远程服务器拉取镜像
  • push:将本地镜像推送到远程镜像仓库
  • rmi:删除本地镜像
  • save:将本地镜像导出到本地文件
  • load:将本地文件导入到本地镜像
  • history:查看镜像历史
  • tag:给镜像打标记
  • import:将URL文件或者本地文件导入到本地镜像
  • inspect:查看本地镜像详细信息

可以在命令后面加--help查看具体命令的详细使用方式:

docker COMMAND --help

2、命令详解

2.1、列出本地镜像

docker images [OPTIONS] [REPOSITORY[:TAG]]

参数说明:

  • OPTIONS
    • -a, --all:显示镜像所有信息
    • --digests:显示镜像摘要信息
    • -f, --filter filter:根据过滤条件显示镜像
    • --format string :格式化镜像输出
    • --no-trunc:不截断输出
    • -q, --quiet:只显示镜像ID
  • REPOSITORY[:TAG]:仓库:标签,如果不指定仓库,则列出全部本地仓库

默认列出所有镜像

docker iamges

REPOSITORY            TAG       IMAGE ID       CREATED          SIZE
tomcat10              10.0.8    e5f9a8863052   14 minutes ago   3.17MB
arvin88/tomcat_user   8         4b6a6e0cf6c1   43 hours ago     590MB
arvin88/tomcat_user   8.1       4b6a6e0cf6c1   43 hours ago     590MB

各列说明:

  • REPOSITORY:镜像的仓库源
  • TAG:镜像标签
  • IMAGE ID:镜像ID
  • CREATED:镜像的创建时间
  • SIZE:镜像大小

列出指定镜像名列表

docker iamges arvin88/tomcat_user

REPOSITORY            TAG       IMAGE ID       CREATED          SIZE
arvin88/tomcat_user   8         4b6a6e0cf6c1   43 hours ago     590MB
arvin88/tomcat_user   8.1       4b6a6e0cf6c1   43 hours ago     590MB

列出指定镜像名+标签列表

docker iamges arvin88/tomcat_user:8

REPOSITORY            TAG       IMAGE ID       CREATED          SIZE
arvin88/tomcat_user   8         4b6a6e0cf6c1   43 hours ago     590MB

选项:-a,--all

docker iamges -a 或者 docker iamges --all

REPOSITORY            TAG       IMAGE ID       CREATED          SIZE
tomcat10              10.0.8    e5f9a8863052   14 minutes ago   3.17MB
arvin88/tomcat_user   8         4b6a6e0cf6c1   43 hours ago     590MB
arvin88/tomcat_user   8.1       4b6a6e0cf6c1   43 hours ago     590MB

结果与不加选项条件效果一样。

选项:--digests

docker images --digests

REPOSITORY            TAG       DIGEST    IMAGE ID       CREATED          SIZE
tomcat10              10.0.8    <none>    e5f9a8863052   20 minutes ago   3.17MB
arvin88/tomcat_user   8         <none>    4b6a6e0cf6c1   43 hours ago     590MB
arvin88/tomcat_user   8.1       <none>    4b6a6e0cf6c1   43 hours ago     590MB

结果输出多了DIGEST列。

选项:-f, --filter filter

过滤标志(-f--filter)的格式为key=value,如果有多个过滤,则传多个标志(--filter "foo=bar" --filter "bif=baz")

目前支持的过滤器有:

  • dangling (boolean - true or false) 显示没有标签的镜像
docker images -f "dangling=true"
  • label (label=<key> or label=<key>=<value>) 根据构建的Dockerfile里面的LBAEL过滤
docker images -f "label=com.example.version"
  • before (<image-name>[:<tag>], <image id> or <image@digest>) 显示给定的镜像之前创建的镜像
docker images --filter "before=4b6a6e0cf6c1"
  • since (<image-name>[:<tag>], <image id> or <image@digest>) 显示给定的镜像之后创建的镜像
docker images --filter "since=4b6a6e0cf6c1"
  • reference (pattern of an image reference) 根据表达式过滤镜像
docker images --filter=reference=‘*/*‘

选项:--format

格式化占位符如下:

  • .ID:镜像ID
  • .Repository:镜像仓库源
  • .Tag:镜像名
  • .Digest:镜像摘要
  • .CreatedSince:镜像创建以来经过的时间
  • .CreatedAt:镜像创建时间
  • .Size:镜像大小
    语法如下:
docker images --format "{{.ID}}:{{.Repository}}:{{.Tag}}:{{.CreatedAt}}"

e5f9a8863052:tomcat10:10.0.8:2021-07-29 04:06:54 -0400 EDT
4b6a6e0cf6c1:arvin88/tomcat_user:8:2021-07-27 09:46:49 -0400 EDT
4b6a6e0cf6c1:arvin88/tomcat_user:8.1:2021-07-27 09:46:49 -0400 EDT

选项:--no-trunc

docker images --no-trunc

REPOSITORY            TAG       IMAGE ID                                                                  CREATED        SIZE
tomcat10              10.0.8    sha256:e5f9a88630528d90a58873a8efa7249dbeb961a1405618a105ad4a8e283041e0   2 hours ago    3.17MB
arvin88/tomcat_user   8         sha256:4b6a6e0cf6c14223b914fea42a6be8a49c2d1e9b4358a0f225967f0fafcfa1cb   44 hours ago   590MB
arvin88/tomcat_user   8.1       sha256:4b6a6e0cf6c14223b914fea42a6be8a49c2d1e9b4358a0f225967f0fafcfa1cb   44 hours ago   590MB

可以看出,会将镜像ID全部输出

选项:-q, --quiet

docker images -q 或 docker images --quiet

e5f9a8863052
4b6a6e0cf6c1
4b6a6e0cf6c1

选项也有可以多个配合使用,比如列出镜像ID并且不截断。

docker images --format=‘{{.ID}}‘ --no-trunc

sha256:e5f9a88630528d90a58873a8efa7249dbeb961a1405618a105ad4a8e283041e0
sha256:4b6a6e0cf6c14223b914fea42a6be8a49c2d1e9b4358a0f225967f0fafcfa1cb
sha256:4b6a6e0cf6c14223b914fea42a6be8a49c2d1e9b4358a0f225967f0fafcfa1cb

2.2、搜索远程镜像

docker search [OPTIONS] TERM

参数说明:

  • -f, --filter filter 根据过滤条件输出
  • --format string 格式化输出
  • --limit int 最大输出结果数 (默认 25)
  • --no-trunc 不截断输出

参数的-f--format--no-truncimages的用法类似。

docker search --limit 3 --no-trunc tomcat

NAME               DESCRIPTION                                                                                            STARS     OFFICIAL   AUTOMATED
tomcat             Apache Tomcat is an open source implementation of the Java Servlet and JavaServer Pages technologies   3081      [OK]       
rightctrl/tomcat   CentOS , Oracle Java, tomcat application ssl https                                                     6                    [OK]
jelastic/tomcat    An image of the Tomcat Java application server maintained by Jelastic PaaS.                            2             

2.3、拉取镜像

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

参数说明:

  • -a,--all-tags 拉取所有标签的镜像
  • --disable-content-trust 跳过镜像验证(默认true)
  • --platform string 如果远程仓库有多个,指定仓库地址
  • -q, --quiet 拉取时不输出详细信息

拉取时不设置参数或指定TAG,则默认获取latest镜像。

docker pull ykaj9758/tomcat9

Using default tag: latest
latest: Pulling from ykaj9758/tomcat9
469cfcc7a4b3: Pull complete 
dd66912d30dc: Pull complete 
b9e106a1d03e: Pull complete 
6d41cb630740: Pull complete 
Digest: sha256:e70bc08b133dc30eb3274e1cfd0628a612d35a1296f1a493ecead4f5ec8c2ee4
Status: Downloaded newer image for ykaj9758/tomcat9:latest
docker.io/ykaj9758/tomcat9:latest

参数用法就不测试了,有兴趣自行测试。

2.3、推送本地镜像到远程仓库

docker push [OPTIONS] NAME[:TAG]

参数说明:

  • -a,--all-tags 推送所有标签的镜像
  • --disable-content-trust 跳过镜像验证(默认true)
  • -q, --quiet 推送时不输出详细信息
docker push -q arvin88/tomcat10:v1
--推送成功,由于这里加了-q,因此没有输出详细推送信息
docker.io/arvin88/tomcat10:v1

2.4、删除本地镜像

docker rmi [OPTIONS] IMAGE [IMAGE...]

参数说明:

  • -f, --force 强制删除
  • --no-prune 不移除该镜像的过程镜像,默认移除

根据镜像仓库删除。

docker rmi ykaj9758/tomcat9

Untagged: ykaj9758/tomcat9:latest
Untagged: ykaj9758/tomcat9@sha256:e70bc08b133dc30eb3274e1cfd0628a612d35a1296f1a493ecead4f5ec8c2ee4
Deleted: sha256:4fe6b09b4e594b5ccc512445f6edad3c8c07774523ee664ef9d010bec992d76a
Deleted: sha256:6ee9982c8811fbf5a54ad29723c6756abf979595cc663dd0eea187a371cd26dd
Deleted: sha256:b35eeacb163e86113cc1f5f6578e4d31a08c185da53415d3b6b0389ba3091409
Deleted: sha256:470497dbb86a60aceb8c48b8ee802cc7a2e42b6973dfc36c8f2c111cb6af9f63
Deleted: sha256:43e653f84b79ba52711b0f726ff5a7fd1162ae9df4be76ca1de8370b8bbf9bb0

也可以根据镜像ID删除。如果需要将本地镜像全部删除,可以在命令后面追加列出所有镜像命令

docker rmi $(docker images)
如果镜像列表中镜像ID有重复,则不能删除,可以加上-f强制删除
docker rmi -f $(docker images)

2.5、将镜像保存为本地文件

docker save [OPTIONS] IMAGE [IMAGE...]

参数说明:

  • -o, --output string 输出的文件名
docker save -o tomcat10.tar arvin88/tomcat10
--结果
tomcat10.tar

不使用参数情况下,可以这样:
docker save arvin88/tomcat10 > tomcat10.tar

2.6、将本地文件加载到镜像

docker load [OPTIONS]

参数说明:

  • -i, --input string 本地文件名
  • -q, --quiet 不输出详细信息

上一步将镜像保存为本地文件,现在将保存后的文件还原为镜像。

docker load -i tomcat10.tar

12295e8f45f4: Loading layer [==================================================>]  3.185MB/3.185MB
Loaded image: arvin88/tomcat10:v1
[root@localhost docker]# docker images
REPOSITORY         TAG       IMAGE ID       CREATED       SIZE
arvin88/tomcat10   v1        e5f9a8863052   4 hours ago   3.17MB

2.7、查看镜像历史

docker history [OPTIONS] IMAGE

参数说明:

  • --format string 格式化输出
  • -H, --human 输出镜像大小 (default true)
  • --no-trunc 不截断输出
  • -q, --quiet 只输出镜像ID

以上参数除了-H,--human,其他与search命令参数用法一样。

docker history arvin88/tomcat10:v1
IMAGE          CREATED       CREATED BY   SIZE      COMMENT
e5f9a8863052   4 hours ago                3.17MB    Imported from https://mirror-hk.koddos.net/apache/tomcat/tomcat-10/v10.0.8/bin/apache-tomcat-10.0.8-deployer.tar.gz
加上-H=false结果
IMAGE          CREATED AT                  CREATED BY   SIZE      COMMENT
e5f9a8863052   2021-07-29T04:06:54-04:00                3165364   Imported from https://mirror-hk.koddos.net/apache/tomcat/tomcat-10/v10.0.8/bin/apache-tomcat-10.0.8-deployer.tar.gz

2.8、给镜像打标记

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

SOURCE_IMAGE[:TAG]:原镜像
TARGET_IMAGE[:TAG]:打标记后的镜像

docker tag arvin88/tomcat10:v1 arvin88/tomcat10:v2

REPOSITORY         TAG       IMAGE ID       CREATED       SIZE
arvin88/tomcat10   v1        e5f9a8863052   4 hours ago   3.17MB
arvin88/tomcat10   v2        e5f9a8863052   4 hours ago   3.17MB

2.9、将URL文件或者本地文件导入到本地镜像

docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

参数说明:

  • -c, --change list Dockerfile文件
  • -m, --message string 设置镜像信息
  • --platform string 如果有多个仓库,指定仓库

将tomcat9从官网拉取下来。

docker import -m="首次拉取Tomcat9" https://mirror-hk.koddos.net/apache/tomcat/tomcat-9/v9.0.50/bin/apache-tomcat-9.0.50-fulldocs.tar.gz arvin88/tomcat9:v1

Downloading from https://mirror-hk.koddos.net/apache/tomcat/tomcat-9/v9.0.50/bin/apache-tomcat-9.0.50-fulldocs.tar.gz
Importing [==================================================>]  6.538MB/6.538MB
sha256:9bbb4fc3b91617c09c82322f35c518791ca31e0ca4effdeb87652145ef54d792

REPOSITORY         TAG       IMAGE ID       CREATED          SIZE
arvin88/tomcat9    v1        9bbb4fc3b916   28 seconds ago   73.4MB

如果不指定存储名称,则默认<none>

docker import -m="首次拉取Tomcat9" https://mirror-hk.koddos.net/apache/tomcat/tomcat-9/v9.0.50/bin/apache-tomcat-9.0.50-fulldocs.tar.gz
Downloading from https://mirror-hk.koddos.net/apache/tomcat/tomcat-9/v9.0.50/bin/apache-tomcat-9.0.50-fulldocs.tar.gz
Importing [==================================================>]  6.538MB/6.538MB
sha256:12b66d873fb4aca882f106e7c4616cb08d243779657950a8fdced7cba12593ec

REPOSITORY         TAG       IMAGE ID       CREATED              SIZE
<none>             <none>    12b66d873fb4   33 seconds ago       73.4MB

然后可以使用tag命令,设置名称及标签

docker tag 12b66d873fb4 tomcat9:v1
REPOSITORY         TAG       IMAGE ID       CREATED              SIZE
tomcat9            v1        12b66d873fb4   About a minute ago   73.4MB

2.10、查看镜像详细信息

docker inspect [OPTIONS] NAME|ID [NAME|ID...]

docker inspect 12b66d873fb4 
[
    {
        "Id": "sha256:12b66d873fb4aca882f106e7c4616cb08d243779657950a8fdced7cba12593ec",
        "RepoTags": [
            "tomcat9:v1"
        ],
        "RepoDigests": [],
        "Parent": "",
        "Comment": "首次拉取Tomcat9",
        "Created": "2021-07-29T11:58:24.888558636Z",
        "Container": "",
        "ContainerConfig": {
            "Hostname": "",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": null,
            "Cmd": null,
            "Image": "",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": null
        },
        "DockerVersion": "20.10.7",
        "Author": "",
        "Config": {
            "Hostname": "",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": null,
            "Cmd": null,
            "Image": "",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": null
        },
        "Architecture": "amd64",
        "Os": "linux",
        "Size": 73362010,
        "VirtualSize": 73362010,
        "GraphDriver": {
            "Data": {
                "MergedDir": "/var/lib/docker/overlay2/b65458a9b24e69d75b82ad423b42bc36a2969ecaf20687f574c0d26718a67b06/merged",
                "UpperDir": "/var/lib/docker/overlay2/b65458a9b24e69d75b82ad423b42bc36a2969ecaf20687f574c0d26718a67b06/diff",
                "WorkDir": "/var/lib/docker/overlay2/b65458a9b24e69d75b82ad423b42bc36a2969ecaf20687f574c0d26718a67b06/work"
            },
            "Name": "overlay2"
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:07c25b8b9cae522b03fcde4ad413f0ad1fab9d4b099fcb36108044f4f1351950"
            ]
        },
        "Metadata": {
            "LastTagTime": "2021-07-29T07:59:59.783788199-04:00"
        }
    }
]

以上命令是对整个本地镜像进行操作,如果需要对单个镜像操作,可以看下docker image --help具体使用。

Docker-镜像使用

上一篇:layui 之监听 select 的变化


下一篇:第5天 循环结构及相应习题