Docker registry 你有深入的玩过吗?

简介: Docker registry 你有深入的玩过吗?

Docker Registry Overview

文章目录

Docker Registry Overview

1. 什么是 Docker registry ?

2. Docker Hub

3. Docker Hub 常见操作

4. 私有 docker 仓库

5. 创建本地仓库

6. 角色

6.1 Index

6.2 Registry

6.3 Registry Client

1. 什么是 Docker registry ?

Docker registry 是命名 Docker镜像的 存储和分发系统。同一个image可能有多个不同的版本,由它们的标签标识。


Docker registry 被组织成 Docker 存储库 ,其中存储库包含特定镜像的所有版本。仓库允许 Docker 用户在本地拉取镜像,以及将新镜像推送到仓库(在适用时给予足够的访问权限)。


默认情况下,Docker 引擎与 Docker Hub 交互,Docker 的公共仓库实例。但是,可以在本地运行开源 Docker registry /分发版,以及称为 Docker Trusted Registry 的商业支持版本。网上还有其他公共登记处。要从本地仓库中提取镜像,您可以运行类似于以下内容的命令:

docker pull my-registry:9000/foo/bar:2.1
docker pull foo/bar #默认latest

2. Docker Hub

DockerHub 是 Docker Inc. 的托管仓库解决方案。除了公共和私有存储库之外,它还提供自动构建、组织帐户以及与 Github 和 Bitbucket 等源控制解决方案的集成。


任何运行 Docker 的人都可以访问公共存储库,并且镜像名称包括组织/用户名。例如, 将从Jenkins 组织中提取docker pull jenkins/jenkins 带有标签的 Jenkins CI 服务器镜像 。latest 有成千上万的公共image可用。私有存储库限制对存储库创建者或其组织成员的访问。


DockerHub 支持官方存储库,其中包括经过安全性和最佳实践验证的image。这些不需要组织/用户名,例如 docker pull nginx 将提取 latest Nginx 负载均衡器的image。


如果 DockerHub 存储库链接到包含构建上下文(Dockerfile 和同一文件夹中的所有任何文件)的源代码控制存储库,则 DockerHub 可以执行自动镜像构建。源存储库中的提交将触发 DockerHub 中的构建。


如需进一步阅读,请参阅 Docker 文档: 配置自动化 Docker 构建 ›


DockerHub 还可以自动扫描私有存储库中的镜像以查找漏洞,生成一份报告,详细说明在每个镜像层中发现的漏洞,按严重性(严重、主要或次要)。


如需进一步阅读,请参阅 Docker 文档: Docker 安全扫描 ›

3. Docker Hub 常见操作

使用 DockerHub 的常见操作包括:


登录 DockerHub:运行 docker login 将询问您的 DockerHub ID 和密码。

在公共存储库中搜索image:使用 docker search 带有搜索词的命令在公共(包括官方)存储库中查找与该词匹配的所有image。

拉取现有image:使用 docker pull 并指定image名称。默认情况下,检索最新版本,但可以通过指定不同的image标签/版本来覆盖此行为。例如,要拉取 Ubuntu

镜像的(旧)版本 14.04:

docker pull ubuntu:14.04
  • 推送本地镜像:您可以通过运行 docker push 命令推送镜像。例如,要将(最新)本地版本的 my-image 推送到我的仓库:
docker push my-username/my-image

创建一个新组织:这必须通过浏览器完成。转到 Docker Hub ,单击 组织 ,然后单击 创建组织 并填写所需的数据。

创建一个新的存储库:这必须从浏览器中完成。转到 Docker Hub ,单击 Create 下拉菜单并选择 Create Repository。填写所需数据。您现在可以开始将image推送到此存储库。

创建自动构建:这必须从浏览器中完成。首先,通过导航到您的个人资料设置, 将您的 Github 或 Bitbucket 帐户链接到 Docker Hub ,然后单击Linked Accounts & Services 。选择 公共和私人访问(强制)并授权。然后,单击“ 创建” 下拉菜单,选择 “创建自动构建 ”并选择要从中构建image的源存储库。

4. 私有 docker 仓库

在本地(组织内部)运行私有仓库的用例包括:


在隔离网络内分发image (不通过 Internet 发送image);

创建更快的 CI/CD 管道 (从内部网络拉取和推送image),包括更快地部署到本地环境 ;

在大型机器集群上部署新镜像;

严格控制image的存储位置

运行私有镜像系统,尤其是当交付到生产依赖于它时,需要操作技能,例如确保可用性、日志记录和日志处理、监控和安全性。对 http 和整体网络通信的深入了解也很重要。


一些供应商提供自己的开源 Docker registry 扩展。这些可以帮助缓解上述一些运营问题:


Docker Trusted Registry 是 Docker Inc 的商业支持版本,通过复制、镜像审计、签名和安全扫描、与 LDAP 和 Active Directory 的集成提供高可用性。

Harbor 是一个 VMWare 开源产品,它还通过复制、镜像审计、与 LDAP 和 Active Directory 的集成来提供高可用性。

GitLab Container Registry 与 GitLab CI 的工作流程紧密集成,只需最少的设置。

JFrog Artifactory 用于强大的工件管理(不仅是 Docker 镜像,还包括任何工件)。

5. 创建本地仓库

管理本地仓库安装所需的常见操作包括:

启动仓库:仓库本身是一个 Docker 镜像,需要使用 docker run . 例如,根据默认配置运行它,并将主机端口 5001 上的请求转发到容器端口 5000(注册中心将侦听的默认端口):

docker run -d -p 5001:5000 --name  registry registry:2 

默认情况下,仓库数据保存为 Docker 卷。要指定主机上的特定存储位置(例如,SSD 或 SAN 文件系统),请使用绑定挂载选项:

-v <host location>:<container location>

Automatically restart registry:要在主机重新启动或仅仅因为仓库容器停止时保持仓库运行,只需将选项添加 --restart=always 到命令中。

停止仓库:停止仓库只是使用 docker stop registry 命令停止正在运行的仓库容器的问题。要实际删除容器,还需要运行:

docker rm -v registry

请注意,开源 Docker registry 带有一组默认配置,用于日志记录存储身份验证中间件报告http通知健康检查等。这些可以通过将特定环境变量传递给仓库启动命令来单独覆盖。例如,以下命令告诉仓库在容器的端口 5001 而不是默认端口 5000 上侦听请求。

docker run -d -e REGISTRY_HTTP_ADDR=0.0.0.0:5001 -p 5001:5001 \
--name  registry registry:2

另一种选择是使用YAML 文件 完全覆盖配置设置 。它还需要作为卷安装在容器上,例如:

docker run -d -p 5001:5000 -v config.yml:/etc/docker/registry/config.yml \
--name  registry registry:2

6. 角色

Docker Registry 有三个角色,分别是indexregistryregistry client

6.1 Index

index 负责并维护有关用户帐户、镜像的校验以及公共命名空间的信息。它使用以下组件维护这些信息:

  • Web UI
  • 元数据存储
  • 认证服务
  • 符号化

这也分解了较长的URL,以方便使用和验证用户存储库。

6.2 Registry

registry是镜像和图表的仓库。然而,它没有一个本地数据库,也不提供用户的身份认证,由S3、云文件和本地文件系统提供数据库支持。此外,通过Index Auth service的Token方式进行身份认证。Registries可以有不同的类型。现在让我们来分析其中的几种类型:


Sponsor Registry:第三方的registry,供客户和Docker社区使用。

Mirror Registry:第三方的registry,只让客户使用。

Vendor Registry:由发布Docker镜像的供应商提供的registry。

Private Registry:通过设有防火墙和额外的安全层的私有实体提供的registry。

6.3 Registry Client

Docker充当registry客户端来负责维护推送和拉取的任务,以及客户端的授权。


如需进一步阅读,请参阅 Docker 文档: 部署仓库服务器 ›和 配置仓库 ›


todo:


How To Set Up a Private Docker Registry on Ubuntu 18.04



相关文章
|
6月前
|
存储 数据可视化 数据安全/隐私保护
使用 Docker Compose 部署 Docker Registry
【1月更文挑战第2天】 在内网环境中,我们期望能够在本地共享镜像。为了解决这一问题,Docker Registry成为了我们的救星。Docker Registry是一个用于存储和管理Docker镜像的开源工具。通过在本地部署Docker Registry,您可以轻松地构建、存储和分享自己的Docker镜像。
394 3
使用 Docker Compose 部署 Docker Registry
|
6月前
|
关系型数据库 MySQL Linux
Linux 本地 Docker Registry本地镜像仓库远程连接
Linux 本地 Docker Registry本地镜像仓库远程连接
186 0
|
JSON Kubernetes Docker
k8s 集群中运行 docker registry 镜像仓库
k8s 集群中运行 docker registry 镜像仓库
1262 0
|
Docker 容器
【registry】docker 私有仓库实现https 访问
【registry】docker 私有仓库实现https 访问
1140 2
【registry】docker 私有仓库实现https 访问
|
2月前
|
运维 数据安全/隐私保护 Docker
Docker自建仓库之Docker Registry部署实战
关于如何使用Docker Registry镜像搭建本地私有Docker仓库的实战教程,包括了下载镜像、创建授权目录和用户名密码、启动Registry容器、验证端口和容器、测试登录仓库、上传和下载镜像的详细步骤。
617 5
|
3月前
|
安全 Linux 数据安全/隐私保护
详解如何登录Docker Registry
【8月更文挑战第24天】
270 0
|
安全 网络协议 关系型数据库
2021-09-08东软Linux学习-----CentOS Docker wordpress compose registry Cockpit
2021-09-08东软Linux学习-----CentOS Docker wordpress compose registry Cockpit
92 0
|
6月前
|
关系型数据库 MySQL Linux
如何在Linux上搭建本地Docker Registry镜像仓库并实现公网访问
如何在Linux上搭建本地Docker Registry镜像仓库并实现公网访问
338 0
|
6月前
|
关系型数据库 MySQL Linux
Docker Registry本地镜像仓库部署并实现远程连接拉取镜像
Docker Registry本地镜像仓库部署并实现远程连接拉取镜像
402 1
|
6月前
|
存储 数据可视化 数据安全/隐私保护
Docker Registry本地私有仓库搭建
Docker Registry本地私有仓库搭建
683 0
下一篇
无影云桌面