docker history显示完整信息_Docker系列教程01-使用Docker镜像

54954cd4ebc54040c600d1313398db29.png

docker系列导读

一文带你读懂什么是docker

Docker安装部署

10张图带你深入理解Docker容器和镜像

前言

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

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

Docker镜像简介

1、什么是镜像?

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

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

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

2、镜像从哪里来的?

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

4cef713b4b1cc8f92c243407c2b3dcff.png

下载nginx镜像

镜像管理命令

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

c21aae321d3a0f41ec44f108e234adad.png

1、搜索镜像

08155812c1d706bdffba76ba0c70ed99.png

docker search 语法

例如,搜索mysql相关的镜像,命令如下:
8eca147760c96d87e19f4999b786434c.png

2、下载镜像

aac68d489ffa71cf7d295833534132a2.png

docker pull 语法

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

比如下载Ubuntu 18.04系统镜像,命令如下:

70ba340256b544193db5a4081115bcbd.png

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

68eda1de46abf04dd039c35558d95c4e.png

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

# docker images web_repoREPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZEweb_repo              1.0                 2e9f372f03a0        44 seconds ago      2.433 MBweb_repo              latest              2e9f372f03a0        44 seconds ago      2.433 MBweb_repo              0.9                 4986bf8c1536        2 weeks ago         2.433 MB# docker tag -f web_repo:0.9 web_repo:latest# docker images web_repoREPOSITORY          TAG                 IMAGE ID            CREATED              VIRTUAL SIZEweb_repo              1.0                 2e9f372f03a0        About a minute ago   2.433 MBweb_repo              0.9                 4986bf8c1536        2 weeks ago          2.433 MBweb_repo              latest              4986bf8c1536        2 weeks ago          2.43

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

3、查看镜像

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

471e1c8a7f32d709ce02d5540183c24b.png

解释列出的字段信息:

  • REPOSITORY

说明镜像来自哪个仓库,比如 ubuntu 表示ubuntu 系列的基础镜像

  • TAG镜像的标签信息,人为标识镜像的不同版本
  • IMAGE ID

镜像的ID,用来唯一标识镜像,如果两个镜像ID相同,表示它们指向同一个镜像,只是标签名称不同而已

  • CREATED镜像最后更新的时间
  • SIZE镜像大小

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

4eaabaa40e26ad29fe9a67fbcb49bf80.png

只展示部分

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

d9377d5a0a031b2312f6e958a38b2ea8.png

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

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

a79f01e3dfd2369b0ac4339d66dccfbf.png

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

4、为镜像添加标签

d186a77079e9ddd8090069dd8c4dc8de.png

docker tag 语法

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

5、删除镜像

81323e4cd52188b5bb85b48d59f54c1b.png

docker rmi 语法

1)使用标签删除镜像

[root@qll251 ~]# docker rmi myubuntu:v1Untagged: myubuntu:v1

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

2)使用镜像ID删除镜像

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

9ab88a5d8680c249c4314d4884b72594.png

如果出现以下情况:

607acef8f1ea40df61a98206eaa3dbd4.png

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

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

17c926c0acfe4c5c6b68e7f6b232786f.png

3)清除镜像

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

ebca4a044cebf7832345c32c97b32483.png

docker image prune 语法

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

[root@qll251 ~]# docker image prune -fTotal reclaimed space: 1.6 GB

6、存出和载入镜像

1)存出镜像

649ff6e959558859b1b4f1dcad60d6b8.png

docker save 语法

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

[root@qll251 ~]# docker save -o /data/ubuntu:18.04.tar ubuntu:18.04[root@qll251 ~]# ls /dataubuntu:18.04.tar

- o参数:表示导出镜像到指定的文件中。

2)载入镜像

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

eba8ce196956d9f6f5869b4e3fdd614e.png

docker laod 语法

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

3f36a32fa0637194900bb0e2a0edf70b.png

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

7、上传镜像

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

b499f8e1b39a713aa3559fcb9160eff6.png

docker push 语法

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

1、为 待上传的镜像打上标签[root@qll251 ~]# docker tag ubuntu:18.04 qinlulu/myubuntu:v12、登录到Docker Hub(没有账号的需在官网注册)[root@qll251 ~]# docker loginLogin 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: qinluluPassword:WARNING! Your password will be stored unencrypted in /root/.docker/config.json.Configure a credential helper to remove this warning. Seehttps://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded3、上传镜像[root@qll251 ~]# docker push qinlulu/myubuntu:v1The push refers to repository [docker.io/qinlulu/myubuntu]28ba7458d04b: Pushed838a37a24627: Pusheda6ebef4a95c3: Pushedb7f7d2967507: Pushedv1: digest: sha256:b58746c8a89938b8c9f5b77de3b8cf1fe78210c696ab03a1442e235eea65d84f size: 1152

Docker Hub官网地址:

https://hub.docker.com

登录后,验证镜像已上传:

6cf0837248b9633141367a01b3f33a29.png

本章命令小结

1、搜索镜像

docker search mysql

2、下载镜像

docker pull ubuntu:18.04

3、列出本地镜像列表

docker images

4、查看镜像详细信息

docker inspect ubuntu:18.04

5、查看镜像历史信息

docker history ubuntu:18.04

6、为镜像添加标签

docker tag ubuntu:latest myubuntu:v1

7、删除镜像

docker rmi myubuntu:v1

8、清除临时镜像文件

docker image prune -f

9、存出镜像

docker save -o ubuntu.tar ubuntu:18.04

10、载入镜像

docker load -i ubuntu.tar

11、上传镜像

docker push qinlulu/myubuntu:v1

结语

欢迎来到『开源Linux』,这里是 Linux 爱好者的聚集地。专注分享Linux/Unix相关内容(包括Linux运维、Linux系统开发、网络编程、以及虚拟化和云计算等技术干货)。风里雨里,我们在这里等您,期待与您相遇。

e3992ae5bceb9992747252f757292361.png
4f66cb72d797765b0e19fe813912dee2.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值