当前位置: 首页 > news >正文

docker(四)使用篇一:docker 镜像仓库

前文我们已经介绍了 docker 并安装了 docker,下面我们将正式步入使用环节,本章是第一个使用教学:docker 镜像仓库

一、什么是镜像仓库

所谓镜像仓库,其实就是负责存储、管理和分发镜像的仓库,并且建立了仓库的索引,提供了登录认证能力。

镜像仓库可以看做一个大仓库,其内部又管理多个小镜像仓库(Repository),这些小镜像仓库通过命名来区分。

每个 Repository 包含一个或多个镜像,镜像之间则通过镜像名称和标签 (Tag)来区分。

镜像仓库整体视图

大镜像仓库(Registry)

镜像仓库可以看做一个大仓库,要从哪一个镜像仓库拉取镜像,通常通过 DNS 或 IP 地址来确定一个镜像仓库(如hub.docker.com)。一个 Registry 中可以存在多个 Repository。

小镜像仓库(Repository) 

由某特定的 docker 镜像的所有迭代版本组成的镜像仓库;又可分为“顶层仓库用户仓库”,用户仓库名称格式为“用户名 / 仓库名”。
每个仓库可以包含多个 Tag(标签),每个标签对应一个镜像。(镜像名称(name)+标签(tag):如 nginx:latest)

认证能力:

提供用户注册,登录、登出镜像仓库的能力。

索引:

提供镜像的索引信息,方便检索。

一个容器镜像实际包含了两个部分:

一个是元数据(存储镜像信息的数据),其实就是由 dockerfile 构建出来的描述文件,这个描述文件会说这个容器镜像有多少层,每一层里面有什么内容,它的 checksum 这些信息都会记录下来,还有最终的可执行文件在哪,都是在这个元数据里面。

还有一个是 blob 文件,它真正保存了数据,也真正占用空间。

二、镜像仓库的分类

1、以是否对外开放划分种类(研发人员常用):

1)公有仓库:像阿里云、docker hub 等放到公有网络上的镜像仓库,不用登录就可以下载镜像,供大家访问使用。

2)私有仓库:不对外开放,往往位于私有网络,只有公司内部人员可以使用。

2、按供应商和面向群体划分种类

(1)sponsor(赞助) registry:第三方的 registry,供客户和 docker 社区版使用。

(2)mirror(镜像) registry:第三方的 registry,只让客户使用,例如阿里云必须注册才能使用。

(3)vendor(供应商) registry:由发布 docker 镜像的供应商提供的 registry,例如像 Google 和 Redhat 提供了镜像仓库服务。

(4)private registry:通过没有防火墙和额外的安全层的私有实体提供的 registry,仅供内部使用。

三、镜像仓库的工作机制

1、镜像仓库的使用流程

(1)通过 docker login 登录仓库

(2)Docker pull 拉取需要的镜像

(3)通过 dockerfile 或者 commit 等方式制作完镜像再通过 docker push 上传到仓库

2、在实际研发中镜像仓库如何使用

Docker Registry 中的镜像通常由开发人员制作,而后推送至公共私有”Registry 上保存,供其他人员使用,例如“部署到生产环境。

实际工作中的 docker 使用流程图

开发环境:开发人员使用的一套环境

测试环境:需求开发完成后,发布到供测试人员进行测试的环境

预发布环境:版本测试完成后,发布到和生产类似的环境,提前模拟生产发布

生产环境:真正面向客户的环境

3、镜像仓库的拉取机制

启动容器时,docker daemon 会试图从本地获取相关的镜像;本地镜像不存在时,其会从 Registry 中下载该镜像并保存到本地。

四、常见的镜像仓库

1、docker hub(已被封禁,可以拉取公有镜像,但无法登陆私有仓库)

注意:截止至文章发布,因某些原因,docker hub 在国内已经被封禁,无法通过国内网络访问,仅可以拉取公有镜像!

Docker Hub Docker 提供的托管存储库服务,用于查找容器映像并与团队共享。

具有以下功能:

1)个人可以注册私有仓库,能够发布自己的镜像

2)提供镜像检索能力

3)提供海量官方和认证组织的镜像

4)从 GitHub Bitbucket 自动构建容器镜像并将它们推送到 Docker Hub

5)支持 webhook(webhook 是一种基于 HTTP 的回调函数,发生指定的事件时,服务器会自动将相关的有效负载发送到客户端的 webhook URL)

docker hub 的功能浏览

1、搜索镜像

 2、镜像 tag 查找

3、对应版本拉取命令

4、镜像的大小,idcpu 架构查看

2、国内公有镜像仓库

由于 docker hub 已经被封禁,通过正常渠道,我们只能访问国内各大云服务商提供的镜像仓库,如腾讯、阿里、华为等,笔者由于云服务器是华为云的,因此这里给出华为云镜像仓库的链接以及如何创建私有的镜像仓库:

华为开源镜像仓库

Docker华为云创建私人镜像仓库

3私有仓库

私有镜像仓库则是指部署在公司或组织内部的,用于自身应用 Docker 镜像存储、分发的镜像仓库。

在构建公司内部使用的自动化发布系统的过程中,从安全的角度出发,应用的打包镜像一般情况下只会被存储在私有镜像仓库中,CI / CD 流程的衔接点也是通过向私有镜像仓库上传镜像和拉取镜像的操作来完成的。

常见的私有仓库工具:

Harbor:Harbor: 

VMware 公司最近开源的企业级 Docker Registry 项目, 其目标是帮助用户迅速搭建一个企业级的 Docker registry 服务。它以 Docker 公司开源的registry 为基础,提供了管理 UI, 基于角色的访问控制(Role Based Access Control),AD/LDAP 集成、以及审计日志(Audit logging) 等企业用户需求的功能,同时还原生支持中文。Harbor 的每个组件都是以 Docker 容器的形式构建的,使用 Docker Compose 来对它进行部署。

Nexus:

Nexus Sonatype 公司发布的一款仓库(Repository)管理软件,目前常被用来作为 Maven 私服、Docker 私服。

Docker registry:

docker 官方提供的私服,类似于 docker hub。用于保存公司内部上传的 Docker 镜像。

五、核心:镜像仓库相关命令

命令清单

命令别名功能备注
docker login登录仓库(在拉取私人镜像 / 向个人仓库推送镜像时,需要使用)必须掌握
docker logout登出仓库
docker pulldocker image pull从仓库拉取镜像(拉取公有镜像不需要登录)必须掌握
docker pushdocker image push向仓库推送镜像必须掌握
docker search查找镜像仓库中某个镜像(一般直接在网页查询了,用的较少)

1、docker login

# 注意:[]表示可选项,可有可无,后面都是如此,这里特别说明,后面不再赘述
docker login [核心参数] [镜像仓库地址]

核心参数:

-u(镜像仓库的用户名)

-p(镜像仓库的密码,建议不要在命令行中输入,会被看见

功能登陆到一个 Docker 镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub。 

通过华为云容器镜像服务给的登录指令,成功登录笔者自己的仓库

2、docker pull

# 此处的 TAG 指的是镜像标签;DIGEST则是另一种表示,sha256的值
docker pull [关键参数] 镜像仓库名[:TAG 或者 @DIGEST]

关键参数:

-a:拉取指定仓库中的某一镜像的所有不同版本。

--disable-content-trust :忽略镜像的校验,默认开启

功能:从镜像仓库中拉取指定镜像

# 示例:拉取 nginx 1.23.3 版本
docker pull nginx:1.23.3

3、docker push

docker push [关键参数] 镜像名称[:TAG]

关键参数:

-a:推送某一镜像的所有不同版本。

--disable-content-trust :忽略镜像的校验,默认开启

功能:把本地镜像上传至当前登录的镜像仓库

# 示例:向自己的的仓库推送 myapache v1 版本
docker push myapache:v1

4、docker search

# 因 docker hub 被国内封禁,此命令暂时无法实操
docker search [关键参数] 镜像名称

关键参数

--no-trunc:显示完整的镜像描述;

 -f <过滤条件>:列出收藏数不小于指定值的镜像。

功能:查找镜像仓库中某个镜像(一般直接在网页查询了,用的较少)

# 从 Docker Hub 查找所有镜像名包含 nginx,并且 star 数大于 10 的镜像
docker search -f stars=10 nginx

 5、docker logout

docker logout [镜像仓库地址]

功能:登出镜像仓库

相关文章:

  • 【办公类-100-01】20250515手机导出教学照片,自动上传csdn+最大化、最小化Vs界面
  • 2025长三角杯数学建模A题:智能手机产品设计优化与定价问题,赛题发布与思路分析
  • 搭建Centos环境安装禅道
  • 深度解析 Meta 开源 MR 项目《North Star》:从交互到渲染的沉浸式体验设计
  • Python 类变量与实例变量完全指南:区别、使用场景及常见陷阱
  • 兰亭妙微B端UI设计:融合多元风格,点亮品牌魅力
  • 什么是接口文档,如何使用,注意事项有哪些
  • 51c~C语言~合集5
  • SQL:MySQL函数:空值处理函数(NULL Handling Functions)
  • Uniapp中小程序调用腾讯地图(获取定位地址)
  • 【向量维度如何选择?】
  • Midjourney 最佳创作思路与实战技巧深度解析【附提示词与学习资料包下载】
  • Ubuntu 20.04 LTS 中部署 网页 + Node.js 应用 + Nginx 跨域配置 的详细步骤
  • C# 活动窗体截图:基于 Win32 API 的实现
  • Rust 学习笔记:关于 Vector 的练习题
  • 视频质量分析时,遇到不同分辨率的对照视频和源视频,分辨率对齐的正确顺序。
  • Docker容器镜像与容器常用操作指南
  • LBM:潜在桥接匹配用于图像重照明
  • Flink 1.13.2 日志配置优化:保留最近 7 天日志文件
  • ControlNet可控生成从理论到实践——保姆级教程
  • 上海市税务局:收到对刘某某存在涉税问题的举报,正依法依规办理
  • 董军在第六届联合国维和部长级会议上作大会发言
  • 上海静安将发放七轮文旅消费券,住宿券最高满800元减250元
  • 秘鲁总统任命前司法部长阿拉纳为新总理
  • 大英博物馆展歌川广重:他是梵高最钟爱的浮世绘名家
  • 香港根据《维护国家安全条例》订立附属法例