文章目录

  • 前言
  • 什么是Docker镜像
    • 如何获取镜像
    • 查看镜像信息
    • 删除单个镜像
    • 批量删除镜像
    • 导出与导入镜像
    • 清理镜像
  • 总结

前言

Docker 中大部分的操作都是围绕三个核心概念:镜像容器仓库。如果这三个概念达到融会贯通后,我们也就入门了Docker这门技术,首先让我们学习一下Docker的镜像。

什么是Docker镜像

Docker镜像相当于一个虚拟机快照,如果你玩过使命召唤系列游戏,每次通关后都可以保存游戏进度(存档快照),Docker镜像我们也可以理解是保存了各种软件的存档快照,Docker官方维护了数以万计的Docker镜像仓库,仓库地址:https://hub.docker.com/。我们可以通过镜像仓库下载各种相应软件的镜像,无需再像以前一样下载软件然后手动进行各种配置,通过下载镜像我们可以启动应用,简化了开发工作,极大的提高了工作效率。

如何获取镜像

Docker Hub网站上提供了很多常用软件的应用镜像,例如:mysqlredisnginxkafka …,基本上你开发过程中需要使用的软件都有与之对应的镜像。通过docker 提供的pull命令,可以在镜像仓库下载镜像,命令格式为:

docker pull 应用镜像名:版本号

例如获取nginx,我们可以在Docker Hub网站上进行搜索:

也可以通过docker search命令进行搜索如下所示:

默认搜索出来的镜像源还是比较多可以通过 -f 进行过滤,例如过滤STARS在1000以上的镜像源。

[root@VM-0-10-centos ~]# docker search nginx -f=STARS=1000
NAME                  DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
nginx                 Official build of Nginx.                        15928     [OK]
jwilder/nginx-proxy   Automated Nginx reverse proxy for docker con…   2101                 [OK]

上面 -f 指定过滤的属性是STARS = 1000 表示查询STARS数量大于等于1000),下面使用docker pull命令以下载这个镜像:

需要指出的是如果下载镜像没有指定相应的版本,则docker默认会下载标签为latest的最新镜像版本。

查看镜像信息

  • docker images

使用docker images 命令可以列出所有的下载镜像信息,其命令使用语法如下:

[root@VM-0-10-centos ~]# docker images --helpUsage:  docker images [OPTIONS] [REPOSITORY[:TAG]]List imagesOptions:-a, --all             Show all images (default hides intermediate images)--digests         Show digests-f, --filter filter   Filter output based on conditions provided--format string   Pretty-print images using a Go template--no-trunc        Don't truncate output-q, --quiet           Only show image IDs

例如查询当前所有的应用镜像:

[root@VM-0-10-centos ~]# docker images -a
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    f652ca386ed1   12 days ago   141MB
属性 说明
REPOSITORY 标识镜像来自那个仓库
TAG 镜像标签,通常指镜像的版本号
IMAGE ID 标识镜像的唯一性,如果有相同的镜像ID说明两个镜像指向的是同一个镜像只是标签会不同
CREATED 标识镜像构建时间
SIZE 标识镜像的尺寸大小
  • tag

可以使用此命令为应用镜像新增标签,例如新增标签my-nginx的镜像:

## 使用语法为 docker tag IMAGE ID 标签名
[root@VM-0-10-centos ~]# docker tag f652ca386ed1 my-nginx
## 查看所有的镜像信息
[root@VM-0-10-centos ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
my-nginx     latest    f652ca386ed1   12 days ago   141MB
nginx        latest    f652ca386ed1   12 days ago   141MB

可以看到新增镜像标签成功,需要注意的是这两个标签对应的镜像ID都是相同的。

  • inspect

使用此命令可以查看构建镜像的详细信息,使用语法为 docker inspect 镜像ID

返回的数据较多,如果只想查看某一个属性可以使用 -f进行过滤,例如获取 RootFS

[root@VM-0-10-centos ~]# docker inspect -f {{".RootFS"}} f652ca386ed1
{layers [sha256:9321ff862abbe8e1532076e5fdc932371eff562334ac86984a836d77dfb717f5 sha256:0664b7821b6050b321b14cdede97c2079ae45aff22beb4a42f7595294f5be62d sha256:c9fcd9c6ced8b793a0ad4f93820c1d51d94c3b1fca93000d93e9e8eefa6fdb38 sha256:d3e1dca44e8225cdd06b6bf7cdfc847e3ab9f09ab6aeefb006e2e8f02f0dd26c sha256:82caad489ad7bc7e1ae6f17bb1e9ade2bca44a41a07cc8c5587af8a2de2f536a sha256:2bed47a66c07ecddfea2bc9c128d81b31272d99b69aff1fb4edc079c4dbf56e7] }

需要注意的是通过两对大括号并且需要在过滤的属性名称加一个.

  • history

上面我们下载nginx镜像时候出现了如下的界面:

下载的过程中出现好几个Pull complete 的字样好像是分层进行下载的。需要指出的是docker下载镜像就是分层进行下载的,这样做的好处就是:当不同镜像包含相同的镜像层,那么只需要进行第一次下载,后面的相同的镜像层直接拿来复用即可,我们可以通过history命令查看各个镜像层信息。

删除单个镜像

可以使用docker rmi 命令删除镜像,其使用语法如下:

## 查看Docker镜像删除命令
[root@VM-32-10-centos ~]# docker rmi --help
Usage:  docker rmi [OPTIONS] IMAGE [IMAGE...]
Remove one or more images
Options:-f, --force      Force removal of the image--no-prune   Do not delete untagged parents

例如删除标签为my-nginx的镜像如下所示:

[root@VM-0-10-centos ~]# docker rmi  my-nginx:latest
Untagged: my-nginx:latest
[root@VM-0-10-centos ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    f652ca386ed1   12 days ago   141MB

需要指出的是这种docker rmi REPOSITORY:TAG命令只是删除了该镜像指定标签而巳, 并不影响镜像ID相同其他标签文件。 因此上述操作相当于只是删除了镜像 f652ca386ed1 的一个标签副本。但是如果使用的是docker rmi IMAGE ID 这种命令,将会删除所有相同镜像ID的镜像。

## 在此新增标签为my-nginx的文件
[root@VM-0-10-centos ~]# docker tag f652ca386ed1 my-nginx
## 查看所有的镜像文件
[root@VM-0-10-centos ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
my-nginx     latest    f652ca386ed1   12 days ago   141MB
nginx        latest    f652ca386ed1   12 days ago   141MB

我们根据镜像ID进行删除:

[root@VM-0-10-centos ~]# docker rmi  f652ca386ed1
Error response from daemon: conflict: unable to delete f652ca386ed1 (must be forced) - image is referenced in multiple repositories

使用 -f进行强制删除:

[root@VM-0-10-centos ~]# docker rmi -f f652ca386ed1
Untagged: my-nginx:latest
Untagged: nginx:latest
Untagged: nginx@sha256:9522864dd661dcadfd9958f9e0de192a1fdda2c162a35668ab6ac42b465f0603
Deleted: sha256:f652ca386ed135a4cbe356333e08ef0816f81b2ac8d0619af01e2b256837ed3e
Deleted: sha256:a7edf84b6db27e8ef5d7368c95159120f00a74cee57368e2bc107ee713172699
Deleted: sha256:46893639b5fbc6315531cb197fb4071750508880425c0620d88aae4e483d72c1
Deleted: sha256:afa1ff13852cf0fa5d5ff8cd21c8a21a99c139fc069926cd1316d1ad3d0c7189
Deleted: sha256:831e8983bb6a65130bec4e73bed4bc641bfd6d7c6917be32a483882f70e809b0
Deleted: sha256:d213f9a0e4eef08107f70d94b36f5a41c1437fc68af82ee82eb74de80282130a
Deleted: sha256:9321ff862abbe8e1532076e5fdc932371eff562334ac86984a836d77dfb717f5
[root@VM-0-10-centos ~]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

这次我们发现当前没有一个nginx镜像存在了。

批量删除镜像

首先我们先下载nginx、tomcat与redis如下所示:

目前我的机器上存有三个镜像查询如下:

[root@VM-0-10-centos ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
tomcat       latest    24207ccc9cce   5 days ago    680MB
redis        latest    aea9b698d7d1   11 days ago   113MB
nginx        latest    f652ca386ed1   12 days ago   141MB

批量删除镜像文件有两种方式:

  1. 使用$() 表达式进行删除
[root@VM-0-10-centos ~]# docker rmi -f $(docker images -qa)
Untagged: tomcat:latest
Untagged: tomcat@sha256:429d5c140820d5eba38042823501d5f4e0f03b282133513e29c22d6358daa7c7
Deleted: sha256:24207ccc9cce2cb6473cec77e1ec441a7b4e6d0579f4e361899fecfc1019189f
Deleted: sha256:ac4e16d5dfd2ff69bd1794be416c8e419ccd485afa28349ea54358af2412d2f8
Deleted: sha256:6074fd0b4c77dccc686e244fb22f46253f103324dd7f241821c535d669abff30
Deleted: sha256:e193493c6b62c99a0b1d71d35570abdc9659c06a603ef21b3c70eebd2d571080
Deleted: sha256:5ba402d00d241ed90ec1aeddc5f51d2c5fca13680aca609acbdae8394d274fda
Deleted: sha256:d949ff5ab84a822d9dc421efa1cf6182c39242f3fe9c014a84bd8314add2d405
Deleted: sha256:979a578d29c884e195c5d22fc1f056ea123ef6e26330ff546afef6680d1670e0
Deleted: sha256:d8846156f697b208f03e0c543e6a4fc7ad67f1fa1f201cdb98c9ff2183a0acd9
Deleted: sha256:696ddf161baa5116ea358eb43639634d9d74c1377532f6ee28a1b13612299cbd
Deleted: sha256:4248cb0e89f00c8fe152aa329eb0ea85490942d192ff6786af7783dcf3d354a9
Deleted: sha256:e2e8c39e0f77177381177ba8c4025421ec2d7e7d3c389a9b3d364f8de560024f
Untagged: redis:latest
Untagged: redis@sha256:2f502d27c3e9b54295f1c591b3970340d02f8a5824402c8179dcd20d4076b796
Deleted: sha256:aea9b698d7d1d2fb22fe74868e27e767334b2cc629a8c6f9db8cc1747ba299fd
Deleted: sha256:beb6c508926e807f60b6a3816068ee3e2cece7654abaff731e4a26bcfebe04d8
Deleted: sha256:a5b5ed3d7c997ffd7c58cd52569d8095a7a3729412746569cdbda0dfdd228d1f
Deleted: sha256:ee76d3703ec1ab8abc11858117233a3ac8c7c5e37682f21a0c298ad0dc09a9fe
Deleted: sha256:60abc26bc7704070b2977b748ac0fd4ca94b818ed4ba1ef59ca8803e95920161
Deleted: sha256:6a2f1dcfa7455f60a810bb7c4786d62029348f64c4fcff81c48f8625cf0d995a
Untagged: nginx:latest
Untagged: nginx@sha256:9522864dd661dcadfd9958f9e0de192a1fdda2c162a35668ab6ac42b465f0603
Deleted: sha256:f652ca386ed135a4cbe356333e08ef0816f81b2ac8d0619af01e2b256837ed3e
Deleted: sha256:a7edf84b6db27e8ef5d7368c95159120f00a74cee57368e2bc107ee713172699
Deleted: sha256:46893639b5fbc6315531cb197fb4071750508880425c0620d88aae4e483d72c1
Deleted: sha256:afa1ff13852cf0fa5d5ff8cd21c8a21a99c139fc069926cd1316d1ad3d0c7189
Deleted: sha256:831e8983bb6a65130bec4e73bed4bc641bfd6d7c6917be32a483882f70e809b0
Deleted: sha256:d213f9a0e4eef08107f70d94b36f5a41c1437fc68af82ee82eb74de80282130a
Deleted: sha256:9321ff862abbe8e1532076e5fdc932371eff562334ac86984a836d77dfb717f5
[root@VM-0-10-centos ~]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

docker images -qa 参数解释:-q 表示只查询镜像的ID,-a表示查询所有的镜像列表。

  1. 使用xargs

上面的删除镜像的命令等价于如下命令:

docker images -q | xargs docker rmi -f

导出与导入镜像

如果在开发中有需要将镜像文件进行导出,可以使用docker save命令,下面以导出一个nginx的镜像为例子:

## 查询nginx镜像
[root@VM-0-10-centos ~]# docker images | grep nginx
nginx                latest    f652ca386ed1   2 weeks ago      141MB

将这个上面镜像导出为tar文件:

docker save -o 导出的tar文件名 仓库:标签名

[root@VM-0-10-centos ~]# docker save -o  nginx.tar nginx:latest
## 查看刚刚导入的nginx包
[root@VM-0-10-centos ~]# ll
total 142500
-rw------- 1 root root 145917440 Dec 23 00:45 nginx.tar

导入镜像:

docker load -i xx.tar

## 首先删除目前存在的镜像nginx,然后在导入tar包
[root@VM-0-10-centos ~]# docker rmi -f nginx
Untagged: nginx:latest
Untagged: nginx@sha256:9522864dd661dcadfd9958f9e0de192a1fdda2c162a35668ab6ac42b465f0603
## 导入tar包
[root@VM-0-10-centos ~]# docker rmi -f nginx
Untagged: nginx:latest
Untagged: nginx@sha256:9522864dd661dcadfd9958f9e0de192a1fdda2c162a35668ab6ac42b465f0603
## 导入tar包
[root@VM-0-10-centos ~]# docker load -i nginx.tar
Loaded image: nginx:latest
## 查看当前容器中的镜像发现有nginx则证明导入镜像成功
[root@VM-0-10-centos ~]# docker images
REPOSITORY           TAG       IMAGE ID       CREATED          SIZE
galengao/my-tomcat   v1        7a85731c14b2   37 minutes ago   684MB
tomcat               latest    24207ccc9cce   13 days ago      680MB
nginx                latest    f652ca386ed1   2 weeks ago      141MB

清理镜像

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

[root@VM-0-10-centos ~]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
[root@VM-0-10-centos ~]# docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B

总结

本文简单介绍了Docker镜像的括查询、查看 搜索、删除、清理等命令,后面会在后续的文章中输出更多的镜像操作内容,例如 上传镜像、生成自己的镜像等。

Docker入门之使用镜像(二)相关推荐

  1. docker拉取RabbitMq镜像并安装

    RabbitMQ安装入门篇 文章目录 前言 一.Docker拉取RabbitMq镜像 二.docker下启动RabbitMq容器 三.查看RabbitMq是否启动 总结 前言 这篇文章为了方便初学者入 ...

  2. Docker入门系列之二:使用dockerfile制作包含指定web应用的镜像

    2019独角兽企业重金招聘Python工程师标准>>> 在前一篇文章:Docker入门系列之一:在一个Docker容器里运行指定的web应用 里, 我们已经成功地将我们在本地开发的一 ...

  3. Docker入门与应用系列(二)镜像管理

    1.1 什么是镜像 简单说,Docker镜像是一个不包含Linux内核而又精简的Linux操作系统. 1.2 镜像从哪里来 Docker Hub是由Docker公司负责维护的公共注册中心,包含大量的容 ...

  4. docker 镜像修改的配置文件自动还原_原创 | 全网最实在的docker入门教程四

    作者:潘吉祥 上一篇我们学习了如何使用Dockerfile制作自己的镜像,不过这种方式更像纯粹的运维方式,作为开发者来说,未免有些小繁琐,一个不小心写错些命令就执行失败,我们还不知道错误在哪,这着实有 ...

  5. Docker入门系列之三:如何将dockerfile制作好的镜像发布到Docker hub上

    这个系列的前两篇文章,我们已经把我们的应用成功地在Docker里通过nginx运行了起来,并且用dockerfile里制作好了一个镜像. Docker入门系列之一:在一个Docker容器里运行指定的w ...

  6. Docker(二):Docker常用命令之镜像的创建:Dockerfile 与 commit

    相关阅读: Docker(一):Docker的安装与常用命令 Docker(二):Docker常用命令之镜像的创建:Dockerfile 与 commit Docker(三):Docker镜像导入与导 ...

  7. 大白话Docker入门(二)

    2019独角兽企业重金招聘Python工程师标准>>> 上篇的大白话Docker入门(一)让我们认识了docker,知道docker大概是怎么玩的.初步的印象可能会让你觉得和现在的V ...

  8. Docker 入门(二)常用命令纯手敲带测试结果

    Docker常用命令 帮助命令 docker version # 显示docker版本信息 docker info # 显示docker系统信息,包括镜像和容器的数量 docker --help # ...

  9. 理论+实操:docker入门初体验,申请阿里镜像加速器

    文章目录 一:Docker概述 1.1 docker概念: 1.2 docker设计的目标: 1.3 docker的组成: 1.4 docker的使用场景 1.5 docker版本: 二: docke ...

最新文章

  1. 用C语言实现Ping程序功能
  2. qt creator linux安装教程,- Qt Creator下载和安装(详细教程)
  3. 9076什么意思_9076西南大学人力资源开发与管理答案
  4. 正确的VC2008运行库发行方法
  5. python sklearn 归一化_第3章 Sklearn概述
  6. 数字语音信号处理学习笔记——语音信号的短时时域分析(4)
  7. python安装不上怎么办_python安装不了怎么办
  8. 读《程序是怎样跑起来的》第三章有感
  9. java 测试磁盘io,详解三种Linux测试磁盘IO性能的方法总结,值得收藏
  10. 爬虫的步骤解析内容xpath介绍_Xpath的基本方法和使用详解 Python爬虫中最好用解析库...
  11. Java核心编程总结(九、File文件类),王道训练营Java百度云盘
  12. 常见不透明度16进制转换
  13. 沪深交易所的集合竞价机制
  14. RSA系列第2篇:RSA 加密解密
  15. android8 avb检验,android avb(Android Verified Boot)验证
  16. 制作简单时钟logo
  17. 0.1 Typora 文档备份
  18. pandas 做图显示中文标签
  19. 使用python中的Selenium爬取百度文库word文章
  20. html中鱼眼效果,视频鱼眼效果制作 视频鱼眼效果制作方法

热门文章

  1. 一文讲清-NFT市场新秀SudoSwap的AMM机制-创新挑战与局限
  2. Android Studio 安卓 常用布局控件
  3. win10详细安装教程一(附图)
  4. 基于LOAM框架的激光SLAM开源程序集合
  5. C程序设计导引(5)
  6. 第一个ios应用(1)
  7. 客户端认证服务端证书的过程
  8. 齐鲁云采商品上架问题
  9. 一种基于抽取式的中文机器阅读理解数据集CMRC2018
  10. xilinx 统一安装包下载(vivado vitis petalinux等)