【docker】Docker Register(镜像仓库)

系列文章目录


文章目录


一、什么是 Docker Registry

镜像仓库 (Docker Registry) 负责存储、管理和分发镜像,并且提供了登录认证能力,建立了仓库的索引。镜像仓库管理多个 Repository, Repository 通过命名来区分。每个 Repository 包含一个或多个镜像,镜像通过镜像名称和标签 (Tag)来区分。

1.镜像仓库(Registry):要从哪一个镜像仓库拉取镜像,通常通过 DNS 或 IP 地址来确定一个镜像仓库如 hub.docker.com;一个 Registry 中可以存在多个Repository·Repository可分为"顶层仓库"和"用户仓库";·用户仓库名称格式为"用户名/仓库名"·每个仓库可以包含多个 Tag(标签),每个标签对应一个镜像

2.Repository: ·由某特定的 docker 镜像的所有迭代版本组成的镜像仓库

3.镜像名称(name)+标签(tag):如 nginx:latest

4.认证能力:提供用户注册,登录、登出能力

5.索引:提供镜像的索引信息,方便检索

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

镜像仓库生活案例

大家可以类比超市,一个 Repository 就是一个货架,白象就是组织者,货架上放的产品打的不同标签就是对应的 tag

二、镜像仓库分类

按是否对外开放划分,也是研发人员常说的:

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

(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 上保存,供其他人员使用,例如"部署"到生产环境;

名词解释:

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

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

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

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

3. 镜像仓库的拉取机制

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

四、常用的镜像仓库

1.DockerHub

Docker Hub 是什么?

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

具有以下功能:

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

(2)提供镜像检索能力

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

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

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

Docker Hub 功能浏览:

镜像 tag 查找:

版本拉取命令、镜像对应版本:

2. 国内镜像源

国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。国内很多云服务商都提供了国内镜像加速器服务,例如

阿里云加速器(点击管理控制台 -> 登录账号(淘宝账号) -> 右侧镜像工具 -> 镜像加速器-> 复制加速器地址)

网易云加速器地址 https://hub-mirror.c.163.com

百度云加速器地址 https://mirror.baidubce.com

可以在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件):

powershell 复制代码
{
# 注意如果最外层以及你给有了配置,不要直接覆盖,而是将下面的内容添加,然后确保 json 的格式正确
 "registry-mirrors": [
   "https://hub-mirror.c.163.com",
   "https://mirror.baidubce.com"
 ]
}

添加完成后需要重新加载配置,重启 Docker:

powershell 复制代码
# 加载配置
sudo systemctl daemon-reload 
# 重启 docker
sudo systemctl restart docker 
#查看 docker 状态
sudo systemctl status docker

3. 私有仓库

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

常见的私有仓库工具:

1.Harbor:Harbor 是 VMware 公司最近开源的企业级 Docker Registry 项目,

其目标是帮助用户迅速搭建一个企业级的 Docker registry 服务。它以 Docker 公司开源的registry

为基础,提供了管理 UI, 基于角色的访问控制(Role Based Access Control),AD/LDAP

集成、以及审计日志(Audit logging) 等企业用户需求的功能,同时还原生支持中文。Harbor 的每个组件都是以 Docker

容器的形式构建的,使用 Docker Compose 来对它进行部署。 .

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

(3.) Docker registry:由 docker 官方提供的私服,类似于 docker hub。用于保存公司内部上传的 Docker 镜像。

五、镜像仓库命令

1.docker login

功能:

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

语法:

powershell 复制代码
docker login [OPTIONS] [SERVER]

关键参数

-u :登陆的用户名

-p :登陆的密码

样例:

powershell 复制代码
docker login -u 用户名 -p 密码

2.docker pull

(1).功能

从镜像仓库中拉取或者更新指定镜像

(2).语法

powershell 复制代码
docker pull [OPTIONS] NAME[:TAG|@DIGEST]

(3).别名

powershell 复制代码
docker image pull

(4).关键参数

-a :拉取所有 tagged 镜像

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

(5).样例

powershell 复制代码
docker pull nginx:1.23.3

3. docker push

(1)功能

将本地的镜像上传到镜像仓库,要先登陆到镜像仓库

(2)语法

powershell 复制代码
docker push [OPTIONS] NAME[:TAG]

(3)别名

powershell 复制代码
docker image push

(4)关键参数

-a :推送所有 tagged 镜像

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

powershell 复制代码
docker push myapache:v1

(1)功能

从 Docker Hub 查找镜像,因 docker 网站被封,该命令暂时国内无法实操,需要国外网络联系。

(2)语法

powershell 复制代码
docker search [OPTIONS] TERM

(3)关键参数

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

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

(4)样例

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

5.docker logout

(1)功能

登出一个 Docker 镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub,

(2)语法

powershell 复制代码
docker logout [SERVER]

(3)样例

powershell 复制代码
docker logout

六、镜像命令

学习仓库前我们需要提前了解一部分的镜像命令

1.docker images

(1)功能

列出本地镜像。

(2)语法

docker images [OPTIONS] [REPOSITORY[:TAG]]

(3)别名

powershell 复制代码
docker image ls, docker image list

(4)关键参数

○ -a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);

○ --digests :显示镜像的摘要信息;

○ -f :显示满足条件的镜像;

○ --format :指定返回值的模板文件;

○ --no-trunc :显示完整的镜像信息;

○ -q :只显示镜像 ID。

(5) 样例

powershell 复制代码
#列出本地全部镜像
docker images
#列出本地镜像中 REPOSITORY 为 ubuntu 的镜像列表。
docker images ubuntu`在这里插入代码片`

2. docker image inspect

(1) 功能

查看镜像详细信息

(2) 语法

powershell 复制代码
docker image inspect [OPTIONS] IMAGE [IMAGE...]

• 样例

powershell 复制代码
docker images inspect nginx:1.23.3

3. docker tag

(1) 功能

标记本地镜像,将其归入某一仓库。

(2)语法

powershell 复制代码
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

(3) 别名

powershell 复制代码
docker image tag

(4) 样例

powershell 复制代码
docker tag ubuntu:22.04 myregistry.com/myubuntu:22.04

七、容器命令

学习仓库前我们需要提前了解一部分的容器命令

1.docker run

(1) 功能

创建一个新的容器并运行一个命令

(2)语法

powershell 复制代码
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

(3) 别名

powershell 复制代码
docker container run

(4)关键参数

○ -d: 后台运行容器,并返回容器 ID;

○ -i: 以交互模式运行容器,通常与 -t 同时使用;

○ -P: 随机端口映射,容器内部端口随机映射到主机的端口

○ -p: 指定端口映射,格式为:主机(宿主)端口:容器端口

○ -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

○ --name="nginx-lb": 为容器指定一个名称;

○ -h "mars": 指定容器的 hostname;

○ -e username="ritchie": 设置环境变量;

○ --cpuset-cpus="0-2" or --cpuset-cpus="0,1,2": 绑定容器到指定 CPU 运行;

○ -m :设置容器使用内存最大值;

○ --network="bridge": 指定容器的网络连接类型;

○ --link=[]: 添加链接到另一个容器;

○ --volume , -v: 绑定一个卷

○ --rm :shell 退出的时候自动删除容器

(5)样例

powershell 复制代码
#使用 docker 镜像 nginx:latest 以后台模式启动一个容器,并将容器命名为mynginx。
docker run --name mynginx -d nginx:latest
#使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。
docker run -p 80:80 -v /data:/data -d nginx:latest

2. docker ps

(1) 功能

列出容器

(2) 语法

powershell 复制代码
docker ps [OPTIONS]

(3)别名

powershell 复制代码
docker container ls, docker container list, docker container ps

(4)关键参数

○ -a :显示所有的容器,包括未运行的。

○ -f :根据条件过滤显示的内容。

○ --format :指定返回值的模板文件。如 json 或者 table

○ -l :显示 latest 的容器。

○ -n :列出最近创建的 n 个容器。

○ --no-trunc :不截断输出。

○ -q :静默模式,只显示容器编号。

○ -s :显示总的文件大小。

(5) 样例

powershell 复制代码
docker ps -a

总结

以上就是本文全部内容,主要介绍了docker中的镜像仓库,还介绍了镜像仓库,镜像和容器相关基础的命令。感谢各位能够看到最后,如有问题,欢迎各位大佬在评论区指正,希望大家可以有所收获!创作不易,希望大家多多支持!

相关推荐
吴爃2 小时前
N8N调用系统接口进行AI分析
运维·人工智能·ai
老鱼说AI2 小时前
经典论文精读第一期:DeepSeek-R1-Zero ——RL奇迹
人工智能·分布式·深度学习·神经网络·自然语言处理·nlp·transformer
思通数据2 小时前
市政道路无人机巡检:AI视觉技术的应用与挑战
人工智能·深度学习·安全·目标检测·机器学习·无人机·语音识别
serve the people2 小时前
tensorflow tf.nn.softmax 核心解析
人工智能·python·tensorflow
AI营销实验室2 小时前
AI CRM系统升级,原圈科技赋能销冠复制
大数据·人工智能
Fabarta技术团队2 小时前
喜报|枫清科技AI4S智能体荣获InfoQ2025中国技术力量榜单「AI Agent最具生产力产品」
人工智能
救救孩子把2 小时前
45-机器学习与大模型开发数学教程-4-7 特征函数与矩母函数
人工智能·机器学习
帅小柏2 小时前
SoraWatermarkCleaner 完整安装教程:Windows 与 Linux 双系统指南
人工智能·sora
新程记2 小时前
2026年AI证书选择困境:CAIE认证的市场认可与理性报考指南
人工智能
咕噜船长2 小时前
使用Qwen3-VL模型批量标注视频内容(视频理解)
人工智能·pytorch·深度学习·音视频·视频