Docker Hub 介绍
Docker Hub是一个基于云的存储库服务,用户可以随时随地通过互联网将 Docker 容器镜像推送到 Docker Hub,也可以从Docker Hub拉取 Docker 容器镜像。它提供多种功能,例如,用户可以将镜像推送为私有镜像或公开镜像。
Docker Hub 主要由DevOps团队使用。它是一个开源工具,可免费用于所有操作系统。它就像一个存储空间,用于存储镜像,并在需要时拉取镜像。想要从 Docker Hub 推送/拉取镜像的人必须具备 Docker 的基础知识。让我们来讨论一下 Docker 工具的要求。
Docker 是如今企业日益普及的工具。当开发团队想要将项目及其所有依赖项共享用于测试时,他们可以将代码及其所有依赖项推送到Docker Hub 。首先,创建镜像并将镜像推送到 Docker Hub。之后,测试团队将从 Docker Hub 拉取相同的镜像,无需任何类型的文件、软件或插件来运行该镜像,因为开发团队共享了包含所有依赖项的镜像。
Docker Hub 的主要用途
- 高效的镜像管理:Docker Hub 简化了 Docker 镜像的存储、管理和共享,让您可以轻松地从任何地方组织和访问容器镜像。
- 增强的安全性:它对镜像运行安全检查并提供有关潜在漏洞的详细报告,确保更安全的部署。
- 自动化功能:借助 webhook 等功能, Docker Hub 可以自动化持续部署和测试流程,简化您的CI/CD管道。
- 集成与协作:Docker Hub 与GitHub和 Jenkins 等流行工具无缝集成,并允许管理用户和团队的权限,促进高效协作。
在 Docker Hub 中创建存储库
以下步骤指导您使用 GUI 在 Dockerhub 中创建第一个存储库:
步骤 1:首先导航到 Dockerhub 并使用您的凭据登录,然后选择创建存储库。
第 2 步:之后,我们将进入配置存储库的屏幕,我们必须在其中选择命名空间、存储库名称和可选描述。
- 在可见区域中,如图所示,有两个选项:公共和私有。我们可以根据您所在的组织类型选择其中任何一种。
- 如果您选择“公开”,则每个人都可以推送和使用该镜像,因为每个人都可以访问该镜像。如果您选择“私有”选项,则只有拥有该镜像访问权限的人才能查看和使用它。
步骤 3:最终,借助Docker 命令创建存储库后,我们可以推送或拉取镜像。以下命令用于将本地存在的 docker 镜像推送到 Dockerhub。
1 |
|
将 Docker 镜像推送到 Docker Hub
push 命令,顾名思义,是用于将 docker 镜像推送到 docker hub 上。尝试按照这个例子来了解推送命令:
步骤 1:在系统中打开 Docker。使用以下命令找到要推送的镜像:
1 |
|
上述命令将列出系统上的所有镜像。
第 2 步:转到浏览器并搜索 hub.docker.com。
步骤 3:登录 docker hub 后,如果没有 docker hub 账号,请在 docker hub 上注册。
步骤 4:返回 docker 终端并执行以下命令:
1 | docker login |
步骤 5:然后提供您的凭证并输入您的 docker hub 用户名或密码。
- 用户名
- 密码
第 6 步:按 Enter 键后,您将在屏幕上看到登录成功
步骤 7:然后输入标签镜像名称、docker hub 用户名,并使用以下命令给出它在 docker hub 上显示的名称:
1 |
|
geeksforgeek - 源镜像名称
mdahtisham - Docker hub 用户名
geeksimage - 使用此名称镜像将出现在 docker hub 上
步骤 8:现在使用以下命令推送您的镜像:
1 | docker push mdahtisham/geeksimage |
注意:下面您可以看到已成功推送到 docker hub 的 Docker 镜像:mdahtisham/geeksimage
从 Docker Hub 拉取 Docker 镜像
pull 命令用于从 Docker Hub 获取镜像到本地 docker 环境。请按照此示例来了解 Docker 中的 pull 命令:
步骤 1:现在您可以使用以下命令在 docker 中搜索镜像,如下所示:
1 | docker search 镜像名称 |
如果有具有此名称的镜像,则可以看到屏幕上的所有镜像。如果知道确切的名称,还可以提取镜像
第 2 步:现在拉取镜像,请参阅以下命令。
1 |
|
mdahtisham - Docker Hub 用户名
geeksimage - 使用此名称,镜像将出现在 docker hub 上
步骤 3:现在使用以下命令检查本地 docker 环境中拉取的镜像:
1 | docker images |
Docker Hub Web 服务
Docker Hub 提供各种 Web 服务,旨在帮助开发人员有效地管理、协作和部署容器镜像。这些功能使 Docker Hub 成为一个实用的平台,方便开发人员在整个开发和部署过程中存储、管理和协作容器化应用程序。以下是它提供的功能:
- 镜像仓库: Docker Hub 主要用作镜像仓库,您可以在其中存储和访问容器镜像。您可以选择创建公共和私有镜像仓库、浏览官方镜像以及上传自定义镜像。
- 自动构建: Docker Hub 可以直接链接到GitHub或Bitbucket等代码仓库,自动构建镜像。当你更新代码时,Docker Hub 可以构建新的镜像,保持所有内容同步,从而简化持续部署。
- Webhook:Docker Hub 上的 Webhook集成允许您在镜像更新时触发特定操作,例如部署镜像或发送通知。这对于自动化 CI/CD 流水线中的步骤非常有用。
- 镜像扫描: Docker Hub 提供安全扫描功能(适用于专业版和团队版账户),用于检查镜像中是否存在已知漏洞。这可以帮助您洞察镜像中是否存在安全风险。
- 团队协作: Docker Hub 包含用于管理组织内的用户、团队和权限的工具,使团队更容易共享和控制对 Docker 镜像的访问。
- 官方且经过验证的发布者镜像: Docker Hub 托管来自软件供应商和社区的可信镜像。这些经过验证的官方镜像是构建应用程序的可靠起点。
- 活动监控: Docker Hub 上的每个仓库都包含一个活动日志。它记录镜像的推送、拉取或更新时间,帮助您追踪哪些人访问或修改了您的镜像。
Github 和 Docker Hub 之间的区别
以下是 github 和 dockerhub 的区别:
特征 | GitHub | Docker 中心 |
---|---|---|
主要目的 | 代码存储库和版本控制 | Docker 镜像存储库和管理 |
内容 | 源代码、文档 | Docker 容器镜像 |
一体化 | 可与 Jenkins、 Travis CI 等 CI/CD 工具配合使用 | 与 CI/CD 工具和 Docker 本身集成 |
能见度 | 公共和私有存储库 | 公共和私有存储库 |
安全 | 代码扫描和漏洞警报 | 镜像安全扫描和漏洞报告 |
Docker Hub 使用情况和速率限制
了解 Docker Hub 的使用
在 Docker Hub 上,“使用量”既指您在平台上存储的数据量,也指您通过拉取镜像传输的数据量。定期监控使用量可以帮助您更有效地管理资源并避免额外费用。密切关注使用量也是确保您的 CI/CD 流程和开发工作流程顺畅运行、不间断的有效方法。
合理使用政策
Docker Hub 强制执行公平使用政策,以确保平台为所有人平稳运行。这意味着,如果您的帐户开始使用异常大量的数据,例如过多的拉取请求或存储空间,Docker Hub 可能会暂时减慢(限制)您的活动速度或施加限制。此举旨在防止任何单个用户影响其他用户的性能。
如何查看和跟踪使用情况?
Docker Hub 让您可以轻松监控数据使用情况:
- 获取使用情况报告:登录 Docker Hub 并前往“使用情况”页面,您可以下载 CSV 格式的使用情况报告。您需要选择日期范围,Docker Hub 会将报告发送到您的邮箱。
- 报告见解:定期查看这些报告有助于了解哪些存储库或帐户使用最多的数据,以便您可以根据需要进行调整。
优化使用技巧
为了充分利用您的 Docker Hub 帐户并有效地管理数据:
- 定期监控使用情况:经常检查哪些镜像或帐户消耗的数据最多。
- 使用本地缓存:为了节省带宽,考虑在本地缓存镜像,而不是重复拉取相同的镜像。
- 在 CI/CD 中设置自动化:配置您的 CI/CD 管道以仅在必要时提取镜像,这有助于您保持在速率限制内。
- 定期清理:删除过时或未使用的镜像可以释放存储空间并使您的帐户更易于管理。
Pull Attribution
- 私人存储库:从私人存储库提取的任何内容都会计入所有者的帐户。
- 公共存储库:公共存储库的拉取是根据用户的域或组织成员资格进行的。
Docker Hub 拉取速率限制
根据您的帐户类型,Docker Hub 应用不同的拉取限制:
账户类型 | 拉取限制(每 6 小时) | 每日拉取限额 | 附加选项 |
---|---|---|---|
匿名用户 | 每个 IP 100 次拉取 | 不适用 | 没有任何 |
已验证用户 | 每个 IP 200 次拉取 | 不适用 | 没有任何 |
付费订阅者 | 可定制 | 最多 5,000 次拉动 | 可用的附加组件 |
7.检查 Docker Hub 速率限制
如果您超出了速率限制,Docker Hub 将返回“429”状态码,表示您已达到上限。您还可以使用 API 响应标头实时检查当前拉取限制的状况,以便在接近阈值时进行调整。
验证 Docker Hub Pull 请求
要在 Docker Hub 上验证拉取请求,请按照特定于您的平台的说明进行操作:
Docker 桌面
- 启动 Docker Desktop。
- 单击菜单中的登录/创建 Docker ID 。
- 按照提示登录。
Docker 引擎
- 打开你的终端。
- 输入命令“docker login”向 Docker Hub 进行身份验证。有关如何使用此命令的详细信息,请参阅 Docker 文档。
Docker Swarm
如果您正在使用 Docker Swarm,请将“–with-registry-auth” 标志添加到您的命令中,以便通过 Docker Hub 进行身份验证。
- 如需更多指导,请参阅 Docker 文档中有关创建服务的部分。
- 如果使用 Docker Compose 文件部署应用程序,请查找“docker stack deploy”的说明。
GitHub Actions
- 使用 GitHub Actions 构建和推送镜像时,请参考“登录操作”的文档。
- 对于其他操作,请确保包含您的用户名和访问令牌以进行身份验证。
Kubernetes
- 如果您使用的是 Kubernetes 设置,请按照从私有 registry 中提取镜像的指南进行身份验证步骤。
6.第三方平台
对于第三方服务,请查看提供商提供的有关如何向 Docker 注册表进行身份验证的具体说明。一些示例包括:
- Artifactory
- AWS CodeBuild
- AWS ECS/Fargate
- Azure Pipelines
- Chipper CI
- CircleCI
- Codefresh
- Drone.io
- GitLab
- LayerCI
- TeamCity
Dockerhub 和 Docker Registry 之间的区别
Dockerhub 和 Docker Registry 的区别如下:
特征 | Dockerhub | Docker Registry |
---|---|---|
服务类型 | 基于云的存储库服务 | 自托管注册服务 |
无障碍设施 | 公共和私有映像存储库 | 主要为私人性质,可定制 |
一体化 | 与 GitHub、Jenkins 等集成 | 可以与各种 CI/CD 工具集成 |
安全 | 内置安全扫描和漏洞报告 | 安全取决于具体实现 |
自动化 | 支持 CI/CD 自动化的 webhook | 需要手动设置才能实现自动化 |
Docker Hub 安全性的最佳实践
为了增强安全性并降低与 Docker Hub 上的容器镜像相关的风险,请考虑实施以下最佳实践:
选择合适的基础镜像
- 来源可信度:选择来自可信来源的镜像。Docker Hub 根据信任级别对镜像进行分类,其中 Docker 精选的官方镜像可提供最高级别的保障。此外,您还可以使用 Docker 认证镜像(已根据 Docker 标准进行验证)或已验证发布者镜像。
- 最小化大小:选择满足项目需求的最小基础镜像。较小的镜像具有诸多优势,例如下载速度更快、占用空间更少,以及通过限制可能引入漏洞的依赖项来最大程度地减少攻击面。
利用多阶段构建
- 多阶段构建功能可让您创建精简且易于管理的Dockerfile。每个阶段都可以使用针对特定开发任务定制的不同基础镜像。
- 通过使用多个“FROM”语句,您可以将必要的构件(例如已编译的二进制文件)从一个阶段复制到另一个阶段。这种方法有助于降低复杂性,并将开发工具排除在生产镜像之外,从而最大限度地减少潜在的漏洞。
在开发过程中扫描镜像
- 在整个开发生命周期中定期扫描 Docker 镜像对于及早发现漏洞至关重要。在创建或重建镜像时,可能会引入新的漏洞,因此将扫描纳入工作流程至关重要。
- 在镜像推送到 Docker Hub 或其他镜像仓库之前,在构建过程中设置自动扫描。这确保在部署之前主动解决漏洞。
扫描生产生产环境使用的镜像
- 持续监控您的容器镜像,以识别新发现的漏洞。仅仅依赖过去的扫描可能会使您的生产环境面临风险,因为漏洞可能在您上次审查之后才被发现。
- 为每个镜像维护一份软件物料清单 (SBOM),以跟踪依赖关系。密切关注影响先前扫描镜像的新漏洞警报,并在重新部署之前迅速采取措施修复任何问题。
Docker Hub 的优势
Docker Hub 的优点如下:
- Docker 容器镜像重量轻。
- 我们可以在一分钟内借助命令推送镜像。
- 这是一种安全的方法,还提供推送私有镜像或公共镜像的功能。
- Docker hub 在行业中扮演着非常重要的角色,因为它变得越来越流行,它充当着开发团队和测试团队之间的桥梁。
- 如果有人想分享他们的代码、软件或任何类型的文件供公众使用,您只需在 docker hub 上公开镜像即可。
Docker Hub 的功能
以下是 dockerhub 的功能:
- 通过 Docker Hub 可以轻松存储、管理和与他人共享镜像。
- Docker Hub 对我们的镜像运行必要的安全检查,并生成有关任何安全漏洞的完整报告。
- 当新镜像被推送到 Docker Hub 时,Docker Hub 可以通过触发 Webhook 来自动化持续部署和持续测试等流程。
- 借助 Docker Hub,我们可以管理用户、团队和组织的权限。
- 我们可以将 Docker Hub 集成到我们的工具(如 GitHub、Jenkins)中,从而简化工作流程。
参考文章
Docker Hub 介绍