什么是 Docker 注册表?
Docker 注册表是用于存储和分发具有特定名称的 Docker 映像的系统。同一图像可能有多个版本,每个版本都有自己的一组标签。 Docker 注册表被分成 Docker 存储库,每个存储库都包含所有映像修改。 Docker 用户可以使用注册表在本地获取图像并将新图像推送到注册表(在适用时给予足够的访问权限)。注册表是存储和分发 Docker 镜像的服务器端应用程序。它是无状态的并且具有极强的可扩展性。
先决条件:
- Docker 基础
- 码头工人网络
注册表通常在端口 5000 上侦听诸如推送映像、拉取映像或从光盘加载映像之类的指令。它维护索引和搜索标签,还授权和有时验证连接。
与 Docker Registry 相关的命令:
1. 启动您的注册表:
docker run -d -p 5000:5000 --restart=always --name registry registry:2
它指示 Docker 以分离模式启动名为 registry:2 的注册表,名称为 registry。将注册表的 5000 端口映射到本地端口 5000 并在它死后立即重新启动它。
2. 从中心拉一些图像:
docker pull ubuntu:latest
它说 docker 要拉最新的 ubuntu。
3. 标记该图像并指向您的注册表:
docker image tag ubuntu:latest localhost:5000/gfg-image
4.推送图片:
docker push localhost:5000/gfg-image
5. 拉回该图像:
docker pull localhost:5000/gfg-image
6. 停止注册表:
docker container stop registry
7.停止注册表并删除数据:
docker container stop registry && docker container rm -v registry
为什么我们使用 Docker Registry?
Docker 注册表是补充和集成 CI/CD 管道的绝佳方式。每当您的源代码或版本控制系统中有新的提交时,都会触发 CI 工作流,如果 CI 工作流完成成功,则会将映像部署到您的注册表。然后,来自注册表的信号将启动暂存环境部署或提醒其他系统有新映像的可用性。
所以本质上我们可以说:
- Docker Registry 有助于开发自动化。 docker 注册表允许您自动构建、测试和部署。 Docker 注册表可用于创建更快的 CI/CD 管道,这有助于减少构建和部署时间。
- 如果您想完全控制图像的保存位置,Docker Registry 非常有用。可以使用私有 Docker 注册表。通过这样做,您可以完全控制您的应用程序。除了控制谁可以访问您的 Docker 镜像之外,您还可以确定谁可以查看它们。
- Docker Registry 可以为您提供有关您可能遇到的任何问题的信息。您也可以完全依赖它进行容器部署并随时访问它。
Docker Registry 的替代品:
以下是 Docker Registry 的一些替代方案:
- Docker Hub 为用户提供免费的托管注册表,具有自动构建和组织帐户的功能。
- Docker Registry 的其他替代品很少:
- JFrog Bintray即提供管理、部署和推广应用程序服务的云平台。
- Gitlab Container Registry ,这是一个用于存储 docker 图像的私有且高度安全的存储库。