Docker系列教程01使用Docke

前言

学习Docker,我们需要掌握它的三大核心概念:镜像、容器和仓库。

今天先带大家学习Docker镜像相关的基础知识。

Docker镜像简介

1、什么是镜像?

Docker镜像是一个只读的模板。如果读者之前是VM管理员,则可以把Docker镜像理解为VM模板,如果您是一名研发人员,可以将镜像理解为类(class)。

简单说,Docker镜像是一个不包含系统内核而又精简的操作系统。

例如:一个镜像可以包含一个基本的ubuntu操作系统环境,里面仅安装了Nginx应用程序。可以把它称为Nginx镜像。

2、镜像从哪里来的?

DockerHub是由Docker公司负责维护的公共注册中心,包含大量的容器镜像,Docker工具默认从这个公共镜像库下载镜像。

下载nginx镜像

镜像管理命令

我们先列出镜像相关的命令

1、搜索镜像

dockersearch语法

dockersearch语法例如,搜索mysql相关的镜像,命令如下:

2、下载镜像

dockerpull语法

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

比如下载Ubuntu18.04系统镜像,命令如下:

若不指定标签,则默认会选择latest标签。测试如下:

在这里特别强调下,不要被latest的字面意思“最新的”所误解了,它只是这个资源库的拥有者约定这样,没有附加作用,更不会自动更新。举个例子,我可以轻易把一个过时的镜像打上latest标签,实验如下:

#dockerimagesweb_repoREPOSITORYTAGIMAGEIDCREATEDVIRTUALSIZE

web_repo1.02e9ff03asecondsago2.MB

web_repolatest2e9ff03asecondsago2.MB

web_repo0.bf8cweeksago2.MB

#dockertag-fweb_repo:0.9web_repo:latest#dockerimagesweb_repoREPOSITORYTAGIMAGEIDCREATEDVIRTUALSIZE

web_repo1.02e9ff03a0Aboutaminuteago2.MB

web_repo0.bf8cweeksago2.MB

web_repolatestbf8cweeksago2.43

这里带latest标签的镜像与0.9版本的镜像是一样的,都是两周前的版本,然而1.0的镜像是一分钟以前的。此时带有latest标签的镜像还是最新版本吗?

3、查看镜像

1)使用images命令列出本地镜像列表

解释列出的字段信息:

REPOSITORY说明镜像来自哪个仓库,比如ubuntu表示ubuntu系列的基础镜像TAG镜像的标签信息,人为标识镜像的不同版本IMAGEID镜像的ID,用来唯一标识镜像,如果两个镜像ID相同,表示它们指向同一个镜像,只是标签名称不同而已CREATED镜像最后更新的时间SIZE镜像大小

2)使用inspect命令查看镜像详细信息

只展示部分

上图返回的是一个JSON格式,内容包括镜像制作者、适应架构、各层的数字摘要等。如果只要其中一项内容时,可使用-f指定,例如,获取镜像的创建时间:

3)使用history命令查看镜像历史

dockerpull下载镜像时也我们发现了镜像文件由多个层组成,可以使用history子命令列出各层的创建信息。例如,查看Ubuntu:18.04镜像的创建过程,命令如下:

注意:由于CREATEDBY部分命令过长,被自动截断了,可使用--no-trunc选项输出完整命令。

4、为镜像添加标签

dockertag语法

为ubuntu:latest镜像添加一个新标签:myubuntu:v1

5、删除镜像

dockerrmi

1)使用标签删除镜像

[root

qll~]#dockerrmimyubuntu:v1Untagged:myubuntu:v1

当同一个镜像拥有多个标签时,dockerrmi命令只是删除该镜像的一个标签副本,并不影响镜像文件。

2)使用镜像ID删除镜像

dockerrmi命令后跟镜像ID的前缀即可匹配删除

如果出现以下情况:

仔细观察,发现dbdfa这个镜像id指向了两个repository,因此无法删除。

此时我们可以依次删除该镜像对应的标签即可删除,或者使用-f参数强制删除,命令如下:

3)清除镜像

使用Docker一段时间后,系统中可能会遗留一些临时镜像文件,以及一些未被使用的镜像,可以通过dockerimageprune命令进行清理。

dockerimageprune语法

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

[root

qll~]#dockerimageprune-fTotalreclaimedspace:1.6GB

6、存出和载入镜像

1)存出镜像

dockersave语法例如,导出ubuntu:18.04镜像为本地文件ubuntu:18.04.tar,代码如下:

[root

qll~]#dockersave-o/data/ubuntu:18.04.tarubuntu:18.04[root

qll~]#ls/dataubuntu:18.04.tar-o参数:表示导出镜像到指定的文件中。

2)载入镜像

可使用dockerload将导出的tar文件再次导入到本地镜像库。语法格式如下:

dockerlaod语法

例如,将ubuntu:18.04.tar文件导入本地镜像库,代码如下:

注意:使用dockerload导入的镜像将保留所有的镜像历史记录和元数据信息。后续会我们会在容器章节中与dockerload做对比。

7、上传镜像

使用dockerpush命令默认将镜像上传到DockerHub官方仓库(需要登录)。命令格式如下:

dockerpush语法

例如,将本地的myubuntu:v1镜像上传至官方仓库。代码如下:

1、为待上传的镜像打上标签

[root

qll~]#dockertagubuntu:18.04qinlulu/myubuntu:v12、登录到DockerHub(没有账号的需在


转载请注明:http://www.aierlanlan.com/rzdk/3265.html