关于Docker Hub的一切你应该知道的

让我们了解一下Docker Hub。

在本教程中,我们将学习有关Docker Hub的知识,包括如何使用它,如何创建自己的镜像,以及它如何帮助在发布和获取镜像到和从Docker Hub。此外,我们还将花一些时间探索Docker Hub上一些热门的存储库。

先决条件

您需要基本的understanding of Docker,熟悉Windows和Linux环境。本教程将使用Docker Desktop工具进行练习,即构建和推送镜像到Docker Hub。Windows和Mac用户可以从here下载和安装它,Linux用户可以按照这个link进行操作。

Docker Hub是什么?

Docker Hub是由Docker Inc提供的存储库注册服务。

它允许我们从Docker Hub获取和推送docker镜像。我们可以将其视为GitHub,在GitHub中,我们获取和推送我们的源代码,但在Docker Hub的情况下,我们下载或发布我们的容器镜像。它是一个基于云的在线存储库,存储两种类型的存储库,即公共存储库和私有存储库。公共存储库对所有人都可访问,但私有存储库对存储库的有关所有者可访问,并且如果我们存储的存储库超过一定数量的私有存储库,则会产生费用。

Docker Hub功能

Docker Hub提供以下几个功能。

#1. 镜像存储库

它帮助我们在Docker Hub中查找和获取容器镜像。

它还帮助我们将镜像作为公共或私有存储库推送到Docker Hub。

#2. 团队和组织

它允许我们创建工作组并将存储库作为私有存储库推送,仅在我们的组织内可用。这样,我们可以对我们的容器镜像的私有存储库进行管理访问。

#3. GitHub和Bitbucket集成

它允许与源代码存储库(如GitHub和BitBucket)进行集成。

#4. 自动构建

如果源代码存储库中有任何更改已被推送到源代码存储库,它会自动检测并从GitHub或BitBucket构建容器镜像,并将其推送到Docker Hub。

#5. Webhooks

一旦我们成功推送了镜像,借助Webhook的帮助,它会触发与其他服务集成的动作。

#6. 官方和发布商镜像

由dockers提供的高质量镜像被认为是官方镜像,可以被获取和使用。同样,由外部供应商提供的高质量镜像被称为发布商镜像,也称为认证镜像,它提供了与Docker企业的支持和兼容性保证。我们将在本文的后面讨论更多认证镜像。

创建第一个存储库

此步骤需要使用您的登录凭据登录Docker Hub。如果您没有帐户,可以通过单击网页上的“注册”按钮来创建。登录后,您可以通过在欢迎页面上单击“创建存储库”来创建存储库。

  • 单击“创建存储库”后,它会要求您为存储库命名。
  • 从公共或私有中选择可见性选项。

我们还可以通过构建设置集成我们的源代码存储库,如GitHub和BitBucket,但这是可选的,并且可以在以后的阶段进行。

  • 一切都完成后,点击“创建”。

恭喜!您已经创建了第一个存储库,它将如下所示。

Docker Hub为我们提供了一个免费的私有存储库。虽然,如果我们需要更多的私有存储库,我们可以升级我们的帐户到付费计划。

现在打开上面下载并安装的Docker桌面工具/终端,并使用以下命令登录到Docker Hub。

docker login

浏览镜像

有两种方法可以从Docker Hub搜索公共仓库和镜像,即我们可以从Docker Hub网站搜索,或者我们可以使用命令行工具运行以下命令。假设我们要搜索MySQL仓库镜像。

docker search mysql

下载镜像

我们可以使用Docker Hub命令使用pull命令下载镜像,如下所示

# docker pull mysql

如果我们的机器上已经有了mysql镜像,那么上面的命令将自动更新镜像到最新版本。需要记住的是,如果我们注意到docker search命令的输出,我们会发现Docker Hub上有许多MySQL的镜像,那是因为任何人都可以推送一个镜像。但是根据我们的用例,我们需要选择一个适合的。

假设我们想要下载一个bitnami/mysql镜像。

# docker pull bitnami/mysql

创建镜像

这个过程需要一个Dockerfile。我们可以把它看作是告诉Docker如何组装的使用手册。简而言之,它是一个配置文件,用于保存我们告诉它如何组装的指令。

它是如何工作的?

Docker从Dockerfile中读取指令并自动构建镜像。Docker镜像是一个分层的文件系统,它由多个只读层组成,Docker镜像的每一层代表一个Dockerfile的指令。让我们按照下面的步骤使用Dockerfile创建一个镜像。

创建一个指定我们应用程序配置的Dockerfile。

# sudo vim Dockerfile

注意 – 文件的名称应该是大写的Dockerfile

FROM ubuntu:16.04
MAINTAINER [email protected]
RUN apt-get update
RUN apt-get install –y mysql
CMD echo "My first image created."

让我们来看看Dockerfile中使用的一些重要关键字

  • 我们可以使用#符号在Dockerfile中添加注释
  • FROM”关键字定义要使用的基础镜像
  • MAINTAINER”关键字是要维护该镜像的人
  • RUN”关键字用于运行镜像的指令。在我们的例子中,首先更新系统,然后安装MySQL。
  • CMD”关键字用于在容器启动后执行一个命令
  • COPY”关键字可以用于将文件从主机操作系统复制到Docker容器中
  • “EXPOSE”关键字用于指定容器将运行其进程的端口号

运行以下命令来构建我们的Docker镜像

语法:

docker build -t /repo-name .

# docker build -t asadali08537/first-repo .

在上面的命令中,镜像的名称是asadali08537/first-repo,“.”指定当前工作目录。这是Docker查找docker文件的当前目录的指示。“-t”用于给镜像打标签。我们可以看到类似的输出:

现在让我们通过docker的run命令来测试我们的镜像。

docker run asadali08527/first-repo

执行上述命令将要求您的Docker镜像在您的机器上成功安装MySQL,并且最后还会显示echo消息。

推送镜像

一旦我们的镜像成功创建并正在运行,我们可以通过push命令将其推送到Docker Hub。

docker push asadali08527/first-repo

我们可以在Docker Hub上查看镜像的标签和状态,大致如下所示。

Docker认证镜像是什么?

这些是供应商或贡献者推送的官方镜像。只有当镜像的内容符合Docker Hub提供的规则、标准和法律时,镜像才能获得Docker Hub的认证。简而言之,该镜像必须通过一定的基线测试。

Docker Hub提供了inspectDockerImage工具,供供应商自行认证镜像和插件(通常供应商或贡献者会发布用于日志卷和网络的插件)。

注意:

为了将我们的镜像发布为Docker认证镜像,首先我们必须通过inspectDockerImage工具自行认证和测试我们的镜像和插件,一旦我们成功认证和测试,Docker Hub将对其进行认证。如果我们的内容需要非认证环境,则无论如何都无法发布为认证镜像。

DockerHub上的热门镜像

Docker Hub上有许多经过策划和优化的镜像。

这些镜像的受欢迎程度取决于各种因素,如拉取次数、市场存在、评级、满意度得分等。要获取最受欢迎的存储库的详细列表,请转到Docker Hub网站。使用镜像还取决于操作系统及其架构。如果我们知道所拉取的镜像将用于哪个操作系统及其架构,那么在拉取镜像之前,我们必须考虑以下关键因素。

  • 使用标签查找特定版本(通常为最新版本)。
  • 选择具有最大下载量和星级的镜像。
  • 检查其更新情况(上次更新时间)。
  • 如果可能,检查其类型,是经过验证的发布者还是官方(Docker认证)发布的。

Webhooks

Webhook是一种与事件一起使用的Web回调,它是一种应用程序向另一个应用程序提供实时信息的方式。现如今,几乎每个应用程序都提供Webhook功能,Docker Hub也具备此功能。

Webhook是由用户指定事件触发的HTTP推送API。在docker中,我们可以使用Webhook通知使用相关镜像的应用程序或服务。通常,我们将Webhook配置为docker的事件流水线,这样任何新镜像的上传都会触发测试应用程序运行底层测试用例。

一旦测试结果成功,它将触发另一个事件,即容器部署;一旦部署成功完成,它将触发其他事件以记录迄今为止所做的更改。

结论

我相信现在您对Docker Hub以及如何搜索、创建和推送镜像有了一个相当好的理解。请记住,当您推送公共镜像时,任何人都可以看到它。

如果还没有,请查看这个Docker installation guide

类似文章