Docker核心概念之镜像

这篇具有很好参考价值的文章主要介绍了Docker核心概念之镜像。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

          Docker运行容器前需要本地存在对应的镜像,如果镜像不存在,Docker会尝试先从默认镜像仓库下载,用户也可以通过配置,使用自定义的镜像仓库。

1.1搜寻镜像

      使用docker search命令可以搜索Docker Hub官方仓库中的镜像。语法为docker search [option] keyword。支持的命令选项主要包括:

      -f  ,--filter      filter:过滤输出内容;

      --format string :格式化输出内容;

      --limit   int:限制输出结果的个数,默认为25个;

      --no-trunk  :不截断输出结果

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

Docker核心概念之镜像,docker,linux,运维

1.2 获取镜像

       镜像是运行容器的前提,官方的Docker Hub网站已经提供了数十万个镜像供我们开放
下载。可以使用docker pull 镜像名字   命今,直接从Docker Hub镜像源来下载镜像。该命
令的格式为docker pull NAME[:TAG]。
       其中,NAME是镜像仓库名称(用来区分镜像),TAG是镜像的标签(往往用来表示版本
信息)。通常情况下,描述一个镜像需要包括“名称+标签”信息。
       例如,获取一个Ubuntu18.04系统的基础镜像可以使用如下的命令:
 Docker核心概念之镜像,docker,linux,运维

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

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

1.3  查看镜像信息

        Docker镜像相关的查询命令有ls,tag,和inspect等子命令。

        1.  使用images命令列出镜像
         使用docker  images或docker image ls命令可以列出本地主机上已有镜像的基本信息
例如,下面的命令列出我的本地主机镜像信息:

Docker核心概念之镜像,docker,linux,运维

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

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

             image子命令主要支持如下选项:

              -a  :列出所有(包括临时文件)镜像文件,默认为否;

              --digests=true/false:列出镜像的数字摘要值,默认为否;

             -f ,  --filter=[ ] :过滤列出的镜像,如dangling=true只显示没有被使用的
镜像;也可指定带有特定标注的镜像等;

             --format=“TEMPLATE”:控制输出格式,如.ID代表ID信息,.Repository
代表仓库信息等;
             --no-trunc=true/false:对输出结果中太长的部分是否进行截断,如镜像的ID
信息,默认为是;
            -q,  --quiet=true/false:仅输出ID信息,默认为否。
          更多子命令选项还可以通过man docker-images来查看。

          2.使用tag命令添加镜像标签
          为了方便在后续工作中使用特定镜像,还可以使用docker  tag命令来为本地镜像任
意添如新的标签,例如,添加一个新的my_ubuntu:latest镜像标签,再次使用docker images列出本地主机上镜像信息,可以看到多了一个my_ubuntu:latest标签的镜像。

Docker核心概念之镜像,docker,linux,运维

            3.  使用inspect命令查看详细信息

            使用docke inspect  + 镜像名:tag   命令可以获取该镜像的详细信息,包括制作者,适应
架构、各层的数字摘要等:

Docker核心概念之镜像,docker,linux,运维

           上面代码返回的是一个JSON格式的消息,如果我们只要其中一项内容时,可以使用-f来指定,例如,获取镜像的Architecture:

Docker核心概念之镜像,docker,linux,运维

          4. 使用history命令查看镜像历史
           既然镜像文件由多个层组成,那么怎么知道各个层的具体内容是什么呢?这时候可以使用history子命令,该命今将列出各层的创建信息。
           例如,查看ubuntu:18.04镜像的创建过程,可以使用如下命今:

Docker核心概念之镜像,docker,linux,运维

1.4  删除和清理镜像

         1.使用标签删除镜像
          使用docker rmi或docker image rm命令可以删除镜像,命令格式为docker rmi IMAGE [IMAGE...],其中IMAGE可以为标签或ID,支持选项包括:
           -f,-force:强制删除镜像,即使有容器依赖它;
           -no-prune:不要清理未带标签的父镜像;
           例如,要删除掉my_ubuntu:latest镜像,可以使用如下命令:

Docker核心概念之镜像,docker,linux,运维

          当同一个镜像拥有多个标签的时候,docker rmi命令只是删除了该镜像多个标签中的指定
标签而已,并不影响镜像文件。因此上述操作相当于只是删除了镜像5a214d77f5d7的一个标签副本而已。但当镜像只剩下一个标签的时候就要小心了,此时再使用docker rmi命令会彻底删除镜像。

          2.使用镜像ID来删除镜像
          当使用docker rmi 命令,并且后面跟上镜像的ID(也可以是能进行区分的部分ID串前缀)时,会先尝试删除所有指向该镜像的标签,然后删除该镜像文件本身。

            注意,当有该镜像创建的容器存在时,镜像文件默认是无法被删除的、例如:先利用
ubuntu:18.04镜像来创建一个简单的容器输出一段话:

Docker核心概念之镜像,docker,linux,运维

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

Docker核心概念之镜像,docker,linux,运维

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

Docker核心概念之镜像,docker,linux,运维

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

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

           首先删除客器:
           docker rm d297e9a067a7
           然后使用ID来删除镜像,此时会正常打印出删除的各层信息:

Docker核心概念之镜像,docker,linux,运维

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

           支持选项包括:
            -a,-all:删除所有无用镜像,不光是临时镜像;

             -filter filter: 只清理符合给定过滤器的镜像;

             -force: 强制删除镜像,而不进行提示确认。

Docker核心概念之镜像,docker,linux,运维

1.5 创建镜像

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

         1.docker [container] commit [OPTIONS] CONTAINER [REPOSITORY] [:TAG]

          2.docker [image] import [OPTIONS] file |URL|-[REPOSITORY] [:tag]

           3.docker [image] build文章来源地址https://www.toymoban.com/news/detail-793304.html

到了这里,关于Docker核心概念之镜像的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【玩转Docker小鲸鱼叭】理解Docker的核心概念

    在 什么是虚拟化技术? 一文中,我们对虚拟机和 Docker 都有了简单的了解,需要的小伙伴可以自行跳转回顾~ Docker与传统虚拟化技术有什么区别? Docker 相比传统的虚拟机技术更轻量级,它可以将应用程序打包成容器镜像,每个容器都具有自己的应用程序和系统依赖,并共享

    2024年02月10日
    浏览(44)
  • 【云原生 | Docker】Docker核心概念 & 应用上手最佳流程

    🤵‍♂️ 个人主页: @AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!🐱‍🏍 🙋‍♂️声明:本人目前大学就读于大二,研究兴趣方向人工智能硬件(虽然硬件还没开始玩,但一直

    2024年02月03日
    浏览(45)
  • 【Docker系列】Docker-核心概念/常用命令与项目部署实践

      Docker是一种开源的容器化技术,它允许开发者将应用程序及其依赖项打包到一个轻量级、可移植的容器中,从而实现快速部署和高效运行。Docker的核心概念包括镜像、容器、仓库等。本文将详细介绍Docker的基本概念、安装方法以及常用命令。 介绍3个基础概念: 镜像(Ima

    2024年02月11日
    浏览(51)
  • 【运维知识大神篇】运维人必学的Docker教程1(Docker安装部署+Docker镜像管理+容器管理常用命令+搭建docker的本地yum源+windows系统安装docker环境)

    本篇文章开始给大家介绍Docker,这个是我非常喜欢的一个服务,介绍给大家,希望大家也能喜欢! 目录 何为容器 Docker环境安装部署 一、yum安装(CentOS7.9) 二、rpm包安装(CentOS) 三、卸载docker环境 四、安装指定的docker版本 五、Ubuntu安装docker环境 六、使用deb安装docker 七、

    2024年01月18日
    浏览(110)
  • 【Docker晋升记】No.1--- Docker工具核心组件构成(镜像、容器、仓库)及性能属性

    👧个人主页:@小沈YO. 😚小编介绍:欢迎来到我的乱七八糟小星球🌝 🔑本章内容:Docker工具核心组件构成(镜像、容器、仓库)及性能属性 记得 评论📝 +点赞👍 +收藏😽 +关注💞哦~ 提示:以下是本篇文章正文内容,下面案例可供参考 Docker 是一个开放源代码的容器化平

    2024年02月14日
    浏览(59)
  • 【Docker】Docker的应用包含Sandbox、PaaS、Open Solution以及IT运维概念的详细讲解

    前言   Docker 是一个 开源的应用容器引擎 ,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux或Windows 操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 📕作者简介: 热爱跑步的恒川 ,致

    2024年02月08日
    浏览(43)
  • Docker概念、安装以及配置镜像加速器

    (给自己文章打个call)如果对于linux比较陌生的可以看一看这些文章 Linux安装MySQL、JDK(含环境变量配置)、Tomcat Linux介绍以及常用操作命令 Linux中vi编辑器使用及ps系统管理命令 (1)从VM与Docker框架中,直观上VM多了一层Guest OS,同时Hypervisor会对硬件资源进行虚拟化,docker直接

    2024年02月02日
    浏览(97)
  • Docker概念|容器|镜像|命令详细(创建,删除,修改,添加)

    Docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源 是在Linux容器里运行应用的开源工具 是一种轻量级的”虚拟机“ Docker的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的,可移植的,自给自足的容器。 docker本质就是宿主机的一个进程,

    2023年04月19日
    浏览(46)
  • 云原生之深入解析Docker容器的核心Cgroups的相关概念和使用实现

    Cgroups 是 Linux 系统内核提供的一种机制,这种机制可以根据需求将一些列系统任务机器子任务整合或分离到按资源划分登记的不同组内,从而为系统资源管理提供一个的框架。简单地说,Cgroups 可以限制、记录任务组所使用的物理组员(比如 CPU、Memory、IO等),为容器实现虚

    2024年02月12日
    浏览(44)
  • 【Docker】Docker比虚拟机快的原因、ubuntu容器、镜像的分层概念和私有库的详细讲解

    🚀欢迎来到本文🚀 🍉个人简介:陈童学哦,目前学习C/C++、算法、Python、Java等方向,一个正在慢慢前行的普通人。 🏀系列专栏:陈童学的日记 💡其他专栏:C++STL,感兴趣的小伙伴可以看看。 🎁希望各位→点赞👍 + 收藏⭐️ + 留言📝 ​ ⛱️万物从心起,心动则万物动🏄

    2024年02月14日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包