CHAPTER2Docker镜像-创新互联

docker镜像
    • 2.1 docker image 获取
      • 2.1.1 命令格式(pull)
      • 2.1.2 层(layer)
      • 2.1.3 镜像重名
    • 2.2 查看镜像信息(ls,tag,inspect,history)
      • 2.2.1 使用images命令列出镜像(ls)
      • 2.2.2 使用tag命令添加镜像标签(tag)
      • 2.2.3 使用inspect命令查看详细信息(inspect)
      • 2.2.4 使用history命令查看镜像历史(history)
    • 2.3 搜索镜像(search)
    • 2.4 删除和清理镜像(rmi,prune)
      • 2.4.1 使用标签删除镜像(rmi/rm)
      • 2.4.2 使用镜像ID来删除镜像
      • 2.4.3 清理镜像(prune)
    • 2.5 *创建镜像 (commit,import,build)
      • 2.5.1 基于已有容器创建(commit)
      • 2.5.2 基于本地模板导入(import)
      • 2.5.3 基于 Dockerfile 创建(build)
    • 2.6 存出和载入镜像(save,load)
      • 2.6.1 存出镜像(save)
      • 2.6.2 载入镜像(load)
    • 2.7 上传镜像(push)
    • 2.8 镜像命令汇总

镜像(image)是Docker三大核心概念中最重要的, 自 Docker 诞生之日起镜像就是相关社区最为热门的关键词。 Docker 运行容器前需要本地存在对应的镜像, 如果镜像不存在, Docker 会尝试先从默认镜像仓库下载(默认使用 DockerHub 公共注册服务器中的仓库), 用户也可以通过配置, 使用自定义的镜像仓库。

本章将围绕镜像这一核心概念介绍具体操作, 包括:

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册雅安服务器托管、营销软件、网站建设、陇南网站维护、网站推广。

如何使用pull命令从 Docker Hub 仓库中下载镜像到本地;
如何查看本地已有的镜像信息和管理镜像标签;
如何在远端仓库使 用 search 命令进行搜索和过滤;
如何删除镜像标签和镜像文件;
如何创建用户定制的镜像并且保存为外部文件。
最后,还将介绍如何往DockerHub仓库中推送自己的镜像。

2.1 docker image 获取

镜像是运行容器的前提, 官方的 Docker Hub 网站已经提供了数十万个镜像供大家开放下载。 可以使用docker [image] pull命令直接从 Docker Hub 镜像源来下载镜像。

2.1.1 命令格式(pull)

该命令的格式:

docker [image] pull NAME [ :TAG]

参数:

  • NAME是镜像仓库名称(用来区分镜像),
  • TAG是镜像的标签(往往用来表示版本 信息)。

通常情况下, 描述一个镜像需要包括 “名称+标签“ 信息。

例如, 获取一个Ubuntu 18.04系统精简的基础镜像可以使用如下的命令:

[root@dbc-server-554 ansible]# docker image pull ubuntu:18.04
18.04: Pulling from library/ubuntu
a055bf07b5b0: Pull complete
Digest: sha256:c1d0baf2425ecef88a2f0c3543ec43690dc16cc80d3c4e593bb95e4f45390e45
Status: Downloaded newer image for ubuntu:18.04
docker.io/library/ubuntu:18.04

对于Docker镜像来说, 如果不显式指定TAG, 则默认会选择latest标签,这会下载仓库中最新版本的镜像,例如

docker pull ubuntu
等价于
docker pull ubuntu:latest

一般来说, 镜像的latest 标签意味着该镜像的内容会跟踪最新版本的变更而变化,内容是不稳定的。因此,从稳定性上考虑,不要在生产环境中忽略镜像的标签信息或使用默认的latest标记的镜像

2.1.2 层(layer)

下载过程中可以看出 ,镜像文件一般由若干层(layer)组成 ,a055bf07b5b0这样的字符串是层的唯一id(实际上完整的id包括256比特,64个十六进制字符组成)。使用docker pull命令下载中会获取并输出镜像的各层信息。当不同的镜像包括相同的层时,本地仅存储了层的 一份内容,减小了存储空间。

2.1.3 镜像重名

读者可能会想到, 在不同的镜像仓库服务器的情况下,可能会出现镜像重名的情况。 严格地讲,镜像的仓库名称中还应该添加仓库地址(即registry, 注册服务器)作为前缀,只是默认使用的是官方DockerHub服务 ,该前缀可以忽略。 例如,
docker pull ubuntu:18.04相当于docker pull registory.hub. docker.com/ubuntu:18.04
即从默认的注册服务器DcoekrHub Registry中的 ubuntu 仓库来下载标记为18.04的镜像。

如果从非官方的仓库下载,则 需要在仓库 名称前指定完整的仓库地址。例如从网易蜂巢的镜像源来下载ubuntu:18.04镜像,可以使用如下命令,此时下载的镜像名称为hub. c.163.com/public/ubuntu:18.04

$ docker pull hub.c.163.com/public/ubuntu:18.04 pull

子命令支持的选项主要包括:

  • -a, --all-tags=true/false:是否获取仓库中的所有镜像,默认为否;
  • –disable-content-trust:取消镜像的内容校验,默认为真。
  • –regisotry-mirror=proxy_URL 使用镜像代理服务来加速Docker镜像获取过程,来指定镜像代理服务地址(如https:// registry.docker-en.com)

尝试运行镜像

[root@dbc-server-554 ansible]# docker run -it ubuntu:18.04 bash
root@69c9479cfafd:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
2.2 查看镜像信息(ls,tag,inspect,history) 2.2.1 使用images命令列出镜像(ls)

使用docker images或docker image ls 命令可以列出本地主机上已有镜像的基本信息。格式:

docker images [ls]

例如, 下面的命令列出了上一小节中下载的镜像信息:

[root@dbc-server-554 ansible]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
ubuntu       18.04     e28a50f651f9   7 days ago   63.1MB

在列出信息中, 可以看到几个字段信息:

  • REPOSITORY 来自于哪个仓库, 比如ubuntu表示ubuntu系列的基础镜像;
  • TAG 镜像的标记信息, 比如 18.04、 latest表示不同的版本信息。 标签只是标记, 并不能标识镜像内容;
  • IMAGE ID 镜像的ID(唯一标识镜像),如果两个镜像的ID相同,说明它们实际上指向了同一 个镜像, 只是具有不同标签名称而已;
  • CREATED 创建时间, 说明镜像最后的更新时间;
  • SIZE 镜像大小, 优秀的镜像往往体积都较小。

其中镜像的ID信息十分重要, 它唯一标识了镜像。在使用镜像ID的时候, 一般可以使 用该ID的前若干个字符组成的可区分串来替代完整的ID。
TAG 信息用于标记来自同一个仓库的不同镜像。 例如ubuntu 仓库中有多个镜像, 通过 TAG 信息来区分发行版本, 如18.04、 18.10 等。
镜像大小信息只是表示了该镜像的逻辑体积大小, 实际上由于相同的镜像层本地只会存储一份, 物理上占用的存储空间会小于各镜像逻辑体积之和。

images子命令主要支持如下选项, 用户可以自行进行尝试:

  • -a, --all=true/false: 列出所有(包括临时文件)镜像文件,默认为否;
  • –digests=true/false: 列出镜像的数字摘要值,默认为否;
  • -f, --filter=[] : 过滤列出的镜像,如dangling =true 只显示没有被使用的镜像;也可指定带有特定标注的镜像等;
  • –format=“TEMPLATE” : 控制输出格式,如. ID代表ID信息,.Repository 代表仓库信息等;
  • –no-trunc=true/false: 对输出结果中太长的部分是否进行截断,如镜像的ID 信息,默认为是否;
  • -q, --quiet=true/false: 仅输出ID信息, 默认为否。
[root@dbc-server-554 ansible]# docker images --digests=true
REPOSITORY   TAG       DIGEST                                                                    IMAGE ID       CREATED      SIZE
ubuntu       18.04     sha256:c1d0baf2425ecef88a2f0c3543ec43690dc16cc80d3c4e593bb95e4f45390e45   e28a50f651f9   7 days ago   63.1MB
[root@dbc-server-554 ansible]# docker images --no-trunc=true
REPOSITORY   TAG       IMAGE ID                                                                  CREATED      SIZE
ubuntu       18.04     sha256:e28a50f651f9eefbc8883ddc64704d609f3d95bf1ea9e41f873a8da68ea5ec98   7 days ago   63.1MB
[root@dbc-server-554 ansible]# docker images -f dangling=true
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
[root@dbc-server-554 ansible]# docker images -q
e28a50f651f9

更多子命令选项还可以通过man docker-images来查看。

2.2.2 使用tag命令添加镜像标签(tag)

为了方便在后续工作中使用特定镜像,还可以使用docker tag命令来为本地镜像任意添加新的标签。
格式:

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

例如,添加一个新的myubuntu: latest镜像标签:

[root@dbc-server-554 ansible]# docker tag ubuntu:18.04 myubuntu:latest
[root@dbc-server-554 ansible]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
myubuntu     latest    e28a50f651f9   7 days ago   63.1MB
ubuntu       18.04     e28a50f651f9   7 days ago   63.1MB

再次使用docker images列出本地主机上镜像信息, 可以看到多了一个myubuntu:latest标签的镜像,之后,用户就可以直接使用myubuntu:latest来表示这个镜像了。

细心的读者可能注意到, 这些myubuntu:latest镜像的ID跟ubuntu:latest是完全一致的,它们实际上指向了同一个镜像文件,只是别名不同而已。docker tag命令添加的标签实际上起到了类似链接的作用。

2.2.3 使用inspect命令查看详细信息(inspect)

使用docker [image] inspect命令可以获取该镜像的详细信息,包括制作者、适应架构、各层的数字摘要等,格式

docker inspect [OPTIONS] NAME|ID [NAME|ID...]
 -f, --format=""      Format the output using the given Go template
 -h, --help[=false]      help for inspect
 -s, --size[=false]      Display total file sizes if the type is container
[root@dbc-server-554 ansible]# docker inspect e28
[
    {"Id": "sha256:e28a50f651f9eefbc8883ddc64704d609f3d95bf1ea9e41f873a8da68ea5ec98",
        "RepoTags": [
            "myubuntu:latest",
            "ubuntu:18.04"
        ],
        "RepoDigests": [
            "ubuntu@sha256:c1d0baf2425ecef88a2f0c3543ec43690dc16cc80d3c4e593bb95e4f45390e45"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2023-01-02T18:48:56.081327405Z",
        ...

此处以及后续使用IMAGE ID参数,只要能确定ID,只写前几位即可
上面代码返回的是一个 JSON 格式的消息, 如果我们只要其中一项内容时, 可以使 用-f来指定, 例如, 获取镜像的Architecture:

[root@dbc-server-554 ansible]# docker image inspect -f {{.Architecture}} e28
amd64
[root@dbc-server-554 ansible]# docker image inspect -f {{.Os}} e28
linux
2.2.4 使用history命令查看镜像历史(history)

既然镜像文件由多个层组成,那么怎么知道各个层的内容具体是什么呢?这时候可以使用history子命令,该命令将列出各层的创建信息。
格式:

docker history [OPTIONS] IMAGE
 --format=""      Pretty-print images using a Go template
 -h, --help[=false]      help for history
 -H, --human[=true]      Print sizes and dates in human readable format
 --no-trunc[=false]      Don't truncate output
 -q, --quiet[=false]      Only show image IDs

例如,查看ubuntu:18.04镜像的创建过程,可以使用如下命令:

[root@dbc-server-554 ansible]# docker image history e28
IMAGE          CREATED      CREATED BY                                      SIZE      COMMENT
e28a50f651f9   7 days ago   /bin/sh -c #(nop)  CMD ["bash"]                 0B  7 days ago   /bin/sh -c #(nop) ADD file:132da97f77ddc534d…   63.1MB

使用--no-trunc=true显示长信息

[root@dbc-server-554 ansible]# docker image history --no-trunc=true e28
IMAGE                                                                     CREATED      CREATED BY                                                                                          SIZE      COMMENT
sha256:e28a50f651f9eefbc8883ddc64704d609f3d95bf1ea9e41f873a8da68ea5ec98   7 days ago   /bin/sh -c #(nop)  CMD ["bash"]                                                                     0B                         7 days ago   /bin/sh -c #(nop) ADD file:132da97f77ddc534ddb931a461d83ac2aa601dd4481360c874eac33b6c3470d9 in /    63.1MB
2.3 搜索镜像(search)

使用docker search命令可以搜索Docker Hub官方仓库中的镜像。格式:

docker search [OPTIONS] TERM
OPTIONS
       -f, --filter=      Filter output based on conditions provided
       --format=""      Pretty-print search using a Go template
       -h, --help[=false]      help for search
       --limit=25      Max number of search results
       --no-trunc[=false]      Don't truncate output

例如, 搜索官方提供的带 nginx关键字的镜像

[root@dbc-server-554 ansible]# docker search -f=is-official=true nginx
NAME      DESCRIPTION                STARS     OFFICIAL   AUTOMATED
nginx     Official build of Nginx.   17920     [OK]

再比如, 搜索所有收藏数超过 4 的关键词包括httpd的镜像:

[root@dbc-server-554 ansible]# docker search --filter=stars=4 httpd
NAME                      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
httpd                     The Apache HTTP Server Project                  4291      [OK]
centos/httpd-24-centos7   Platform for running Apache httpd 2.4 or bui…   45
centos/httpd                                                              36                   [OK]

可以看到返回了很多包含关键字的镜像, 其中包括镜像名字、 描述、 收藏数(表示该镜像 的受欢迎程度)、 是否官方创建、 是否自动创建等。默认的输出结果将按照星级评价进行排序。

2.4 删除和清理镜像(rmi,prune) 2.4.1 使用标签删除镜像(rmi/rm)

使用docker rmidocker image rm命令可以删除镜像, 命令格式为

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

其中 IMAGE可以为标签或 ID。 支持选项包括:

  • -f, -force: 强制删除镜像, 即使有容器依赖它;
  • -no-prune: 不要清理未带标签的父镜像。
[root@dbc-server-554 ansible]# docker rmi myubuntu
Untagged: myubuntu:latest
[root@dbc-server-554 ansible]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
ubuntu       18.04     e28a50f651f9   7 days ago   63.1MB

读者可能会想到, 本地的ubuntu:latest 镜像是否会受到此命令的影响。 无须担心, 当同一个镜像拥有多个标签的时候, docker rmi 命令只是删除了该镜像多个标签中的指定 标签而巳, 并不影响镜像文件。 因此上述操作相当于只是删除了镜像 0458a4468cbc的一 个标签副本而已。如果按指定ID删除,则会删除镜像本身。

2.4.2 使用镜像ID来删除镜像

当使用 docker rmi 命令, 并且后面跟上镜像的 ID(也可以是能进行区分的部分 ID 串前缀)时, 会先尝试删除所有指向该镜像的标签, 然后删除该镜像文件本身。
注意,当有该镜像创建的容器存在时,镜像文件默认是无法被删除的,例如: 先利用 ubuntu:18.04镜像创建一个简单的容器来输出一段话:

[root@dbc-server-554 ansible]# docker run -it e28 echo "hello world"
hello world

使用docker ps -a命令可以看到本机上存在的所有容器:

[root@dbc-server-554 ansible]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                CREATED          STATUS                      PORTS     NAMES
fe01b86f100c   e28            "echo 'hello world'"   14 seconds ago   Exited (0) 13 seconds ago             interesting_lumiere
69c9479cfafd   ubuntu:18.04   "bash"                 3 hours ago      Exited (0) 3 hours ago                angry_hofstadter

可以看到,后台存在一个退出状态的容器,是刚基于ubuntu:18.04镜像创建的。试图删除该镜像,Docker会提示有容器正在运行,无法删除:

[root@dbc-server-554 ansible]# docker rmi ubuntu:18.04
Error response from daemon: conflict: unable to remove repository reference "ubuntu:18.04" (must force) - container fe01b86f100c is using its referenced image e28a50f651f9

如果要想强行删除镜像, 可以使用-f参数:

$ docker rmi -f ubuntu:18.04

注意, 通常并不推荐使用-f参数来强制删除一个存在容器依赖的镜像。 正确的做法是, 先删除依赖该镜像的所有容器, 再来删除镜像。
首先删除容器e28a50f651f9:

$ docker rm e28a50f651f9

然后使用ID来删除镜像, 此时会正常打印出删除的各层信息

2.4.3 清理镜像(prune)

使用Docker一段时间后, 系统中可能会遗留一些临时的镜像文件, 以及一些没有被使用的镜像, 可以通过docker image prune命令来进行清理(prune:消减 )。格式:

docker image prune [OPTIONS]

支待选项包括:

-a, -all: 删除所有无用镜像, 不光是临时镜像;
-filter FILTER: 只清理符合给定过滤器的镜像;
-f, -force: 强制删除镜像, 而不进行提示确认。

例如, 如下命令会自动清理临时的遗留镜像文件层, 最后会提示释放的存储空间:

$ docker image prune -f 
... 
Total reclaimed space: 1.4 GB
2.5 *创建镜像 (commit,import,build)

创建镜像的方法主要有三种: 基于已有镜像的容器创建、 基于本地模板导入、 基于Dockerfile创建。

2.5.1 基于已有容器创建(commit)

该方法主要是使用docker [container] commit命令。格式:

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS
       -a,   --author=""       Author  (e.g.,  "John  Hannibal  Smith  hannibal@a-team.com  ⟨mailto:hannibal@a-
       team.com⟩")
       -c, --change=      提交的时候执行Dockerfile指令, 包括CMD,ENTRYPOINT,ENV,EXPOSE,LABEL,ONBUILD,USER,VOLUME,WORKDIR等; 
       -m, --message=""      Commit message
       -p, --pause[=true]      Pause container during commit

下面将演示如何使用该命令创建一个新镜像:

  1. 启动一个镜像, 并在其中进行修改操作。例如, 创建一个hello文件
[root@dbc-server-554 ansible]# docker run -it e28 bash
root@944742a90200:/# touch hello
root@944742a90200:/# ls
bin  boot  dev  etc  hello  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
  1. 此时该容器与原 ubuntu:18.04 镜像相比, 已经发生了改变, 可以使用docker [container] commit命令来提交为一个新的镜像。提交时可以使用 ID 或名称来指定容器:
[root@dbc-server-554 ansible]# docker commit -m "add a new file [hello]" -a "yurq" 944742a90200 hello:0.1
sha256:faae2335ff33a81fe1c3c305a0296002556af1506db9a986bc9c69426e059955
[root@dbc-server-554 ansible]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
hello        0.1       faae2335ff33   7 seconds ago   63.1MB
ubuntu       18.04     e28a50f651f9   7 days ago      63.1MB
2.5.2 基于本地模板导入(import)

用户也可以直接从一个操作系统模板文件导人一个镜像,主要使用 docker [container] import 命令。 命令格式为

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

要直接导人一个镜像,可以使用 OpenVZ 提供的模板来创建,或者用其他已导出的镜像 模板来创建。
OPENVZ 模板的下载地址为http://openvz.org/Download/templates/precreated

[root@dbc-server-554 docker]# cat centos-7-x86_64-minimal.tar.gz |docker import - centos:7
sha256:2d8840b29c99c35ff00ef66b2e4707ea22d61b513736df406f4987a46d0aa57f
[root@dbc-server-554 docker]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
centos       7         2d8840b29c99   3 seconds ago    435MB
hello        0.1       faae2335ff33   38 minutes ago   63.1MB
ubuntu       18.04     e28a50f651f9   7 days ago       63.1MB
2.5.3 基于 Dockerfile 创建(build)

基于 Dockerfile 创建是最常见的方式。 Dockerfile 是一个文本文件,利用给定的指令描述基于某个父镜像创建新镜像的过程。
下面给出 Dockerfile 的一个简单示例,基于centos7镜像构建一个新的centos镜像:

[root@dbc-server-554 docker]# cat dockerfile
FROM centos:7
LABEL version="1.0" maintainer="newbee"
[root@dbc-server-554 docker]# docker build -t centos:test .
Sending build context to Docker daemon  145.6MB
Step 1/2 : FROM centos:7
 --->2d8840b29c99
Step 2/2 : LABEL version="1.0" maintainer="newbee"
 --->Running in b61ec2c18c24
Removing intermediate container b61ec2c18c24
 --->286c9503509f
Successfully built 286c9503509f
Successfully tagged centos:test

Dockerfile强大的构建功能远远不止于此,而且非常关键。更多使用 Dockerfile 的技巧将将在后面进行介绍。

2.6 存出和载入镜像(save,load)

本节主要介绍 Docker 镜像的 save 和 load 子命令。 用户可以使用docker [image] savedocker [image] load命令来存出和载入镜像。

2.6.1 存出镜像(save)

要导出镜像到本地文件,可以使用docker [image] save命令。该命令支持-o、--output string参数,导出镜像到指定的文件中。 格式:

docker save [OPTIONS] IMAGE [IMAGE...]
OPTIONS
       -h, --help[=false]      help for save
       -o, --output=""      Write to a file, instead of STDOUT

示例:

[root@dbc-server-554 docker]# docker save -o centos7.tar centos:test
[root@dbc-server-554 docker]# ls
centos7.tar  centos-7-x86_64-minimal.tar.gz  dockerfile

存出的tar文件可以分享给其他人,通过下面load命令载入使用

2.6.2 载入镜像(load)

可以使用docker [image] load将导出的 tar 文件再导人到本地镜像库。支持-i、--input string选项,从指定文件中读入镜像内容。 格式:

docker load [OPTIONS] IMAGE.tar
OPTIONS
       -h, --help[=false]      help for load
       -i, --input=""      Read from tar archive file, instead of STDIN
       -q, --quiet[=false]      Suppress(删除) the load output

示例:

Loaded image: centos:test
[root@dbc-server-554 docker]# docker rmi 286
Untagged: centos:test
Deleted: sha256:286c9503509fe18eb2d48c9eef585ee6bb8571c116781bad6f7956a33e05520d
[root@dbc-server-554 docker]# docker load -i centos7.tar
Loaded image: centos:test
[root@dbc-server-554 docker]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED             SIZE
centos       test      286c9503509f   13 minutes ago      435MB
centos       7         2d8840b29c99   23 minutes ago      435MB
hello        0.1       faae2335ff33   About an hour ago   63.1MB
ubuntu       18.04     e28a50f651f9   7 days ago          63.1MB

不使用-i,也可以使用重定向<,结果相同,例如:

docker load< centos7.tar
2.7 上传镜像(push)

本节主要介绍 Docker 镜像的 push 子命令。 可以使用docker [image] push命令上 传镜像到仓库,默认上传到 Docker Hub 官方仓库(需要登录)。 命令格式为

docker [image] push NAME[:TAG] | [REGISTRY_HOST[:REGISTRY_PORT]/]NAME[:TAG]
OPTIONS
       -a, --all-tags[=false]      Push all tagged images in the repository
       --disable-content-trust[=true]      Skip image signing
       -h, --help[=false]      help for push
       -q, --quiet[=false]      Suppress verbose output

用户在 Docker Hub 网站注册后可以上传自制的镜像。

[root@dbc-server-554 docker]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: yurq
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
[root@dbc-server-554 docker]# docker tag hello:0.1 yurq/hello:0.1
[root@dbc-server-554 docker]# docker push yurq/hello:0.1
The push refers to repository [docker.io/yurq/hello]
2f8d78308466: Pushed
101b05ef38e1: Mounted from library/ubuntu
0.1: digest: sha256:6aa6a023469f4e2710f516aed3a9950902d8f03c21360a4b50f930202d58d2f0 size: 736

第一次上传时,会提示输入登录信息或进行注册,之后登录信息会记录到本地~/ . docker 目录下。
dockerhub
以后可以通过docker pull yurq/hello:0.1下载镜像进行使用

2.8 镜像命令汇总
命令说明
docker [image] pull NAME [ :TAG]获取镜像
docker images [ls]列出镜像
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]添加标签
docker inspect [OPTIONS] NAMEID [NAME
docker history [OPTIONS] IMAGE镜像构建历史
docker search [OPTIONS] TERM查找镜像
docker rmi [OPTIONS] IMAGE [IMAGE…]删除镜像
docker image prune [OPTIONS]清理镜像
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]创建镜像(基于已有容器创建)
docker import [OPTIONS] fileURL
docker build -t centos:test.创建镜像(基于 Dockerfile 创建).指当前路径
docker save [OPTIONS] IMAGE [IMAGE…]存出镜像
docker load [OPTIONS] IMAGE.tar载入镜像
docker [image] push NAME[:TAG][REGISTRY_HOST[:REGISTRY_PORT]/]NAME[:TAG]
docker login登录https://hub.docker.com

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


分享文章:CHAPTER2Docker镜像-创新互联
网页地址:http://ybzwz.com/article/ddgsie.html