01-概述

Registry是一个无状态,高度可扩展的服务器端应用程序,可存储并允许您分发Docker镜像。

使用注册表:

  1. 严格控制镜像的存储位置
  2. 完全拥有镜像分发管道
  3. 将镜像存储和分发紧密集成到内部开发工作流程中

备选方案:Docker HubDocker Trusted Registry

版本要求

Registry与Docker引擎版本1.6.0或更高版本兼容。

基本命令

启动注册表

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

从Hub中拉出(或构建)一些镜像

docker pull ubuntu

标记镜像,使其指向Registry

docker image tag ubuntu localhost:5000/myfirstimage

上传镜像到Registry中

docker push localhost:5000/myfirstimage

从Registry中拉去镜像

docker pull localhost:5000/myfirstimage

停止Registry并删除所有数据

docker container stop registry && docker container rm -v registry

具体

Registry是一个存储和内容传送系统,包含名为Docker的镜像,可以使用不同的标记版本。

用户使用docker push和pull命令与Registry进行交互。

存储本身被委托给驱动程序默认存储驱动程序是本地posix文件系统,适用于开发或小型部署。还支持其他基于云的存储驱动程序, 如S3,Microsoft Azure,OpenStack Swift和Aliyun OSS。 考虑使用其他存储后端可以通过编写自己的Storage API的驱动程序来实现。 由于保护对托管镜像的访问权限至关重要,因此Registry本身支持TLS和基本身份验证

Registry GitHub存储库包含有关高级身份验证授权方法的其他信息。只有非常大的或公共部署才能以这种方式扩展注册表。

Registry附带了一个强大的通知系统,响应活动调用webhooks,以及广泛的日志记录和报告,这对于想要收集指标的大型安装非常有用。

镜像命名

典型的docker命令中使用的镜像名称反映了它们的来源:

  • docker pull ubuntu指示docker ubuntu从官方Docker Hub中提取一个镜像。这只是较长docker pull docker.io/library/ubuntu命令的快捷方式
  • ocker pull myregistrydomain:port/foo/bar指示docker联系位于的Registry myregistrydomain:port以查找镜像foo/bar

可以在官方Docker引擎文档中找到有关处理图像的各种Docker命令的更多信息。

用例

运行自己的Registry是与CI / CD系统集成和补充的绝佳解决方案。

在典型的工作流程中,对源修订控制系统的提交将触发CI系统上的构建,如果构建成功,则会将新映像推送到Registry。然后,来自Registry的通知将触发暂存环境中的部署,或通知其他系统新镜像可用。

如果您想在大型机器群集上快速部署新镜像,它也是必不可少的组件。

最后,这是在隔离网络中分发镜像的最佳方式。

上次修改: 14 April 2020