05|镜像仓库:该怎样用好Docker Hub这个宝藏
Chrono
你好,我是 Chrono。
上一次课里我们学习了“Dockerfile”和“docker build”的用法,知道了如何创建自己的镜像。那么镜像文件应该如何管理呢,具体来说,应该如何存储、检索、分发、共享镜像呢?不解决这些问题,我们的容器化应用还是无法顺利地实施。
今天,我就来谈一下这个话题,聊聊什么是镜像仓库,还有该怎么用好镜像仓库。
什么是镜像仓库(Registry)
之前我们已经用过 docker pull 命令拉取镜像,也说过有一个“镜像仓库”(Registry)的概念,那到底什么是镜像仓库呢?
还是来看 Docker 的官方架构图(它真的非常重要):
图里右边的区域就是镜像仓库,术语叫 Registry,直译就是“注册中心”,意思是所有镜像的 Repository 都在这里登记保管,就像是一个巨大的档案馆。
然后我们再来看左边的“docker pull”,虚线显示了它的工作流程,先到“Docker daemon”,再到 Registry,只有当 Registry 里存有镜像才能真正把它下载到本地。
当然了,拉取镜像只是镜像仓库最基本的一个功能,它还会提供更多的功能,比如上传、查询、删除等等,是一个全面的镜像管理服务站点。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
Docker Hub是Docker公司搭建的官方Registry服务,为世界上最大的镜像仓库之一,提供丰富的容器化应用。在选择镜像时,需注意区分官方、认证和非官方镜像,并结合下载量、星数、更新历史等条件来判断镜像质量。上传自己的镜像到Docker Hub只需四个步骤,而在离线环境下,可自建私有Registry服务或使用`docker save`和`docker load`命令进行镜像存储和分发。文章还提出两个思考题,探讨为何发布自己打包的镜像以及GitHub和Docker Hub的异同点。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Kubernetes 入门实战课》,新⼈⾸单¥59
《Kubernetes 入门实战课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(20)
- 最新
- 精选
- 朱雯老师您好,在文中提到的arm架构和x86架构支持,请问一下,能否使用dockerfile创建同时支持两种服务的镜像呢。
作者回复: 可以的,用manifest的方式,在一个标签里存不同架构的镜像,可以搜一下。
2022-07-01510 - 拾掇拾掇1.我猜是把自己的工具打包进去或者官方镜像满足不了他们自己的需求 2.github 和docker hub都是仓库,不过一个是代码仓库,一个是容器仓库,面向的都是程序员或者是计算机爱好者,都提供了存储和分发功能
作者回复: great
2022-07-018 - lesserror请问老师: docker官网的内容我感觉很多,如何找到重点快速学习呢?
作者回复: 这也是官网的通病,大而全,不好找重点,建议用关键字搜索。
2022-07-017 - Frank老师,很期待后面的自建镜像仓库啊
作者回复: Registry都已经容器化了,自建非常简单,难的是围绕它的管理工作。
2022-07-0135 - pyhhou思考题: 1. 感觉还是为了方便用户,就拿 ubuntu 举例,官方的基本上就是一个空操作系统,而商业公司就会在其中配置一些环境或安装一些跟公司相关的应用,用户 pull 下来直接使用即可无需从头配置 2. 一个主要是为了管理代码,一个主要为了管理容器。代码仓库主要是面向开发人员,让开发人员能够更好更方便地提出问题、审查代码、流程版本控制等等。而容器仓库主要是面向运维人员,这里面相比代码仓库少了很多的环节,毕竟面对的是一个直接 pull 下来就可以使用的应用,不需要过多的审核和提示等等。个人感觉还是 GitHub 的影响范围更大吧,毕竟所有的应用归根结底都是程序,而并不是所有的程序都需要打包成镜像 最后想请教老师,能否指定镜像仓库而不是从默认的 dockerHub 上面抓取镜像?是使用 `docker pull --platform` 指令吗?有名的镜像仓库有哪些?
作者回复: 说得很好,GitHub是代码仓库,dockerhub是应用仓库。 指定仓库加上网址就可以了,比如gcr.io quay.io。
2022-07-034 - 逗逼师父1. 其他公司有自己的环境配置需求,还可以顺便刷存在感。 2. Github是代码托管,侧重服务软件的开发阶段,范围主要是使用开源软件的开发者;DockerHub是托管镜像,侧重服务软件的部署,使用阶段,范围主要是运维工作者。
作者回复: great
2022-07-0223 - peter老师的专栏很不错,不过看到的比较晚。知道以后就抓紧赶,终于同步了。 前面几篇的学习中,积累了如下几个问题: Q1:04篇中,如果run命令有多行,即包含多个“\”以及多个“&&”,那么,最后是生成一个layer还是多个layer?(文中有一句“每个指令都会生成一个 Layer”)。 Q2:04篇的问题:基于某个系统创建的镜像,可以运行在其他系统上吗?比如,基于ubuntu18创建的镜像,可以运行在centos等系统上吗? Q3:05篇的问题:除了docker Hub以及国外的其他几个仓库外,国内有docker仓库吗? Q4:“课前准备”篇中,提到了VMWare Fusion。 我用的虚拟机是VMWare workstation16,这个可以吗?
作者回复: 1.虽然是多行,但因为有续行符,所以docker仍然会看做是一行,只会有一层。 2.当然可以,镜像都是标准格式,只需要容器运行时,不关心下面的操作系统。 3.国内的不太了解,抱歉。 4.当然可以,不过VMWare workstation没用过,但应该都差不多。
2022-07-0133 - Lorry国内Docker镜像仓库一般都是配置阿里云的吧,老师应该提一下,否则拉取镜像太慢了。
作者回复: 说实在的,国内的我基本不用,所以不是很了解它们的用法,抱歉了,可以参考一下其他同学的回复。
2023-01-03归属地:上海2 - YueShiDocker继承git和github的好多优秀的概念,pull/push/commit/tag/。。。。 想问一下老师,在编程中经常会有一些循环依赖的问题,想请问一下,会不会Dockerfile中也有,例如 A from B, B from C, C from A,这种问题存在吗? 假想一下,alpine的镜像被投毒了,是不是整个docker image镜像世界崩塌了一半?
作者回复: 1.这个应该不会,目前看来没发生过。 2.很有可能,所以要尽量找官方镜像,镜像也要有安全检查的。
2022-07-2221 - 夜空中最亮的星https://hub.docker.com/ 这个地址国内访问不了啊
作者回复: 得自己想办法,不能细说。
2024-02-27归属地:北京
收起评论