Docker - Hub
什么是 Docker Hub?
Docker Hub 是一个基于云的仓库服务,允许用户存储、共享和管理 Docker container images。它由 Docker 公司提供。开发者可以使用广受欢迎的 Docker 平台,将他们的应用及其依赖项打包成轻量级、可移植的 containers。这些 containers 可以在各种环境中一致运行,从而使应用部署和扩展更加容易。
本质上,Docker Hub 是 Docker 用户查找、共享和协作开发 containerized applications 的中心位置。它托管了庞大的预构建 Docker images 库,其中包括数据库、web 服务器、编程语言以及大量其他软件和服务。
用户只需一个命令,就可以根据特定条件(如功能、操作系统版本或搜索关键词)查找 images,然后将它们拉取到本地环境。
Docker Hub 的功能与优势
Docker Hub 是 Docker 公司提供的基于云的仓库服务,拥有众多功能。这些功能旨在简化 containerized applications 的创建、部署和管理。
Docker Hub 是 Docker 用户的全球中心,促进生产力提升、保障安全性,并简化容器生命周期中的协作。以下是 Docker Hub 的一些功能与优势。
- 集中式仓库 − Docker Hub 允许您搜索、访问和共享 containerized apps 和服务。它作为 Docker container images 的中央仓库,充当单一真相来源。
- 庞大的 Images 库 − 它提供了访问海量预构建 Docker images 的权限。这包括流行的 web 服务器、数据库、编程语言和框架等众多软件和服务。您无需从零开始,只需在这个庞大集合中根据独特需求查找并选择 images。
- 开放协作 − Docker Hub 促进开放协作环境。它允许开发者与社区共享自己的 Docker images。您可以基于彼此的工作进行构建和改进。这促进知识共享并加速开发周期。
- 自动化工具 − 它提供了自动化 Docker images 构建、测试和部署的工具。这包括与 CI/CD pipelines 集成以实现顺畅的持续集成和交付工作流。此外,它还支持 automated builds,每当向仓库推送变更时自动启动构建。
- 版本控制与标签 − Docker Hub 支持 Docker images 的版本控制和标签。这简化了服务或应用不同迭代的管理和跟踪。如果需要,它便于回滚到早期版本,并确保跨各种环境的 consistency 和 reproducibility。
- 访问控制与权限 − Docker Hub 具备强大的访问控制和权限管理功能。这允许企业调控谁可以查看、编辑和共享 Docker images。这对于从事机密或专有应用开发的团队尤为有益,有助于保障 containerized deployments 的安全性和完整性。
- 可扩展性与性能 − 作为基于云的服务,Docker Hub 提供了高性能基础设施和可扩展性,用于托管和分发 Docker images。这确保了无论仓库规模或受欢迎程度如何,都能可靠且快速地访问 container images。
- 与 Docker 生态系统的集成 − 它通过与更广泛的 Docker 生态系统无缝集成(包括 Docker Engine、Docker Compose 和 Docker Swarm),提供了一个统一平台,用于从开发到生产的 containerized applications 的开发、启动和管理。
如何创建 Docker Hub 仓库?
创建 Docker Hub 仓库非常简单易行。以下是一个基本指南 −
步骤 1:登录 Docker Hub
访问 https://hub.docker.com/ 创建 Docker Hub 账户并使用您的凭据登录。
步骤 2:创建新仓库
完成注册流程后,您将被引导至 Docker Hub 仪表板。您可以在这里管理您的仓库、镜像和账户设置。
要创建新仓库,请点击菜单栏中的“Repositories”,然后点击仪表板右上角的“Create Repository”按钮。
步骤 3:选择仓库可见性和详细信息
在这里,您可以提供仓库名称、详细信息和仓库的可见性。Public repositories 对所有人可见。另一方面,private repositories 仅限制授权用户访问。
步骤 4:保存并创建仓库
您可以点击“Create”或“Save”按钮来创建您的仓库。一旦仓库创建完成,您就可以从 Docker Hub 仪表板访问它。您可以在这里配置 builds、webhooks、tags 和其他设置。
如何向 Docker Hub 推送或拉取镜像?
您可以使用 Docker 命令向 Docker Hub 仓库推送和拉取 Docker 镜像。以下是操作方法 −
向 Docker Hub 推送镜像
在本节中,让我们看看如何向 Docker Hub 推送镜像 −
步骤 1:标记您的镜像
在向 Docker Hub 推送镜像之前,您应该确保它已正确标记为仓库名称和版本。
在这里,我们将使用来自 Docker Hub public repository 的“hello-world”镜像作为参考。您可以使用以下命令标记镜像 −
$ docker pull hello-world $ docker images $ docker tag <image_id> <username/repository_name:tag>
步骤 2:登录 Docker Hub
在从您的 private repository 拉取或推送镜像之前,您必须使用命令行登录 Docker Hub。您可以使用 docker login 命令使用您的 Docker Hub 用户名和密码向 Docker Hub 进行身份验证。
$ docker login
步骤 3:推送镜像
现在您已登录,可以使用 docker push 命令将标记的镜像推送到 Docker Hub。
$ docker push <username/repository_name:tag>
您可以在 Docker Hub 仓库中验证已推送的镜像。
从 Docker Hub 拉取镜像
您可以使用 Docker pull command 从 Docker Hub 拉取镜像。
$ docker pull <username/repository_name:tag> $ docker images

Docker Hub 的关键组件
Docker Hub 是一个综合平台,具备一套关键组件,用于提升 Docker 镜像的自动化、安全性和管理性。下面提供了一些关键元素的概述 −
- Repositories − Repositories 是 Docker 镜像的存储单元。用户可以在这些组织单元中存储、管理和共享他们的镜像。Public repositories 对公众开放,而 private repositories 仅对授权用户可见。
- Webhooks − Webhooks 允许对 repositories 内发生的事件进行自动化响应。用户可以设置 Webhooks 来触发特定事件,例如镜像推送或更新,从而启动构建过程、发送通知或执行其他操作。
- Service Accounts − 为了认证并授予对 Docker Hub 服务和 API 的访问权限,需要 service accounts。它们使得自动化流程能够安全地与 Docker Hub 通信,而无需人工干预,例如 CI/CD 管道或外部工具。
- Vulnerability Scanning − 为了发现 Docker 镜像中的安全漏洞,Docker Hub 提供了 vulnerability scanning 功能。此功能通过扫描镜像中依赖项的已知漏洞,帮助用户缓解潜在安全风险,并提供有用的洞察。
- Mirroring − 组织可以使用此技术将 Docker Hub repositories 镜像到自己的私有基础设施或内部 registries 中。这可以降低延迟、确保可靠的镜像访问,并赋予组织网络管理员对镜像分发的控制权。
- Automated Builds − Automated builds 通过在链接的 repository 有变更推送时自动启动构建,来简化 Docker 镜像的制作过程。此功能消除了人工干预,确保镜像持续构建并更新为最新的修改。
- User Interface (UI) and API − Docker Hub 提供了一个直观的 web 界面,用于与 repositories 交互、管理镜像并执行管理任务。此外,Docker Hub 提供了一个强大的 API,用于以编程方式访问其功能,便于与外部工具和自动化流程轻松集成。
结论
总之,Docker Hub 是开发者和企业管理 Docker container 镜像的有效资源。Docker Hub 通过提供集中式的 repository,使得存储、共享和分发容器化应用和服务变得更加容易。
它提供了诸如 vulnerability scanning、webhooks 集成和 automated builds 等众多功能。它简化了开发和部署流程,同时保持安全性和合规性。无论您是为本地开发拉取镜像,还是将它们推送到 repository 进行部署,它都拥有强大的 API 和直观的界面,用于处理 repositories 和镜像。
FAQs
Q1. What are Docker registries?
Docker registries 是用于存储 Docker images 的存储单元。它们作为存储、管理和访问 Docker images 的场所,充当容器化服务和应用程序分发的集中中心,使开发者能够在不同环境中分发或共享 images。组织可以为其内部使用创建私有 registries,尽管 Docker Hub 是最广泛使用的 Docker registries 之一。
Q2. Is Docker Hub free?
Docker Hub 提供高级版和免费版计划。用户使用免费版可以存储无限数量的公共 images 并创建公共 repositories。不过,image pulls 的数量和私有 repositories 受到限制。
Docker Hub 为需要额外功能(如更多存储、私有 repositories 和增强安全)的用户提供付费订阅计划,并有不同的定价层级。
Q3. What are repositories in Docker Hub?
Repositories 是 Docker Hub 中的组织单元,用于存储 Docker images。一个 repository 中可能有多个 image 版本,每个版本由唯一的版本号标识。
公共 repositories 对公众开放,而私有 repositories 仅对授权用户可见。Repositories 可以分类为公共或私有。根据项目或应用程序的需求,用户可以创建、管理和共享 repositories。
Q4. What are other alternatives to Docker Hub?
市场上存在多种 Docker Hub 的替代方案。用户可以使用 GitHub Container Registry (GHCR) 直接在 GitHub repositories 中存储和管理 Docker images。您还可以使用 Amazon Elastic Container Registry (ECR),这是 AWS 提供的完全托管的 Docker container registry 服务。
Google Cloud Platform (GCP) 提供 Docker container registry 服务 Google Container Registry (GCR)。Harbor 也作为一个开源的 container registry,提供诸如漏洞扫描和基于角色的访问控制等高级功能。