A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

获取镜像


从 Docker 镜像仓库获取镜像的命令是 docker pull 。其命令格式为:

docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

具体的选项可以通过 docker pull --help 命令看到,这里我们说一下镜像名称的格式。


Docker 镜像仓库地址:地址的格式一般是 <域名/IP>[:端口号] 。默认地址是 Docker Hub。

仓库名:如之前所说,这里的仓库名是两段式名称,即 <用户名>/<软件名> 。对于 Docker Hub,如果不给出用户名,则默认为 library ,也就是官方镜像。

例如:

  • $ docker pull ubuntu:16.04

  • 16.04: Pulling from library/ubuntu

  • bf5d46315322: Pull complete

  • 9f13e0ac480c: Pull complete

  • e8988b5b3097: Pull complete

  • 40af181810e7: Pull complete

  • e6f7c7e5c03e: Pull complete

  • Digest: sha256:147913621d9cdea08853f6ba9116c2e27a3ceffecf3b492983ae97c3d643fbbe

  • Status: Downloaded newer image for ubuntu:16.04


上面没有给出仓库地址默认使用 Docker Hub获取镜像,镜像名称则是ubuntu【仓库名】:16.04【标签】

因此将会获取官方镜像 library/ubuntu 仓库中标签为 16.04 的镜像。


镜像是由多层存储所构成。下载也 是一层层的去下载,并非单一文件。下载过程中给出了每一层的 ID 的前 12 位。并且下载结 束后,给出该镜像完整的 sha256 的摘要,以确保下载一致性。 在使用上面命令的时候,你可能会发现,你所看到的层 ID 以及 sha256 的摘要和这里的不一 样。这是因为官方镜像是一直在维护的,有任何新的 bug,或者版本更新,都会进行修复再 以原来的标签发布,这样可以确保任何使用这个标签的用户可以获得更安全、更稳定的镜 像

运行容器

以 ubuntu:16.04 为 例,如果我们打算启动里面的 bash 并且进行交互式操作的话,可以执行下面的命令。


  • $ docker run -it --rm \

  • ubuntu:16.04 \

  • bash


效果如图:

docker run :是运行容器的命令

--it :这是两个参数,一个是 -i :交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端

--rm : 这个参数是说容器退出后随之将其删除。默认情况下,为了保障需求,退出的容 器并不会立即删除,除非手动 docker rm 。我们这里只是随便执行个命令,看看结果, 不需要排障和保留结果,因此使用 --rm 可以避免浪费空间。

ubuntu:16.04 :这是指用 ubuntu:16.04 镜像为基础来启动容器。
bash :放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash

输入 exit 则可以退出容器


列出镜像docker image ls

列表包含了 仓库名 、 标签 、 镜像 ID 、 创建时间 以及 所占用的空间 。


虚悬镜像

镜像列表中,出现镜像既没有仓库名,也没有标签,均为 <none>,可以进行删除,一般来说虚悬镜像已经失去存在的价值。


可以用这这个命令进行查找虚悬镜像

docker image ls -f dangling=true

用下面命令进行删除

docker image prune
中间层镜像

默认的 docker image ls 列表中只会显示顶层镜像,如果希望显示包括中间层镜像在内的所有镜像的话,需要加 -a 参数。

$ docker image ls -a


这样会看到很多无标签的镜像,与之前的虚悬镜像不同,这些无标签的镜像很多都是中间层镜像,是其它镜像所依赖的镜像。这些无标签镜像不应该删除,否则会导致上层镜像因为依赖丢失而出错。


删除本地镜像
$ docker image rm [选项] <镜像1> [<镜像2> ...]

其中, <镜像> 可以是 镜像短 ID 、 镜像长 ID 、 镜像名 或者 镜像摘要 。

批量删除镜像

比如,我们需要删除所有仓库名为 redis 的镜像:

$ docker image rm $(docker image ls -q redis)

或者删除所有在 mongo:3.2 之前的镜像:

$ docker image rm $(docker image ls -q -f before=

1 个回复

倒序浏览
奈斯,加油加油
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马