什么是注册表?

解释

既然您知道什么是容器镜像以及它是如何工作的,您可能想知道 - 您将这些镜像存储在哪里?

好吧,您可以将容器镜像存储在计算机系统上,但是如果您想与朋友共享它们或在另一台计算机上使用它们怎么办?这就是镜像注册表的用武之地。

镜像注册表是存储和共享容器镜像的集中位置。它可以是公共的,也可以是私有的。Docker Hub 是任何人都可以使用的公共注册表,并且是默认注册表。

虽然 Docker Hub 是一个流行的选项,但目前还有许多其他可用的容器注册表可用,包括 Amazon Elastic Container Registry (ECR)、Azure Container Registry (ACR) 和 Google Container Registry (GCR).您甚至可以在本地系统或组织内部运行私有注册表。例如,Harbor、JFrog Artifactory、GitLab Container registry 等。

注册中心与存储库

当您使用 registry 时,您可能会听到术语 registryrepository (存储库),就好像它们是可以互换的一样。尽管它们是相关的,但它们并不完全是一回事。

注册表是存储和管理容器镜像的集中位置,而存储库是注册表中相关容器镜像的集合。将其视为一个文件夹,您可以在其中根据项目组织镜像。每个存储库都包含一个或多个容器镜像。

下图显示了注册表、存储库和镜像之间的关系。

mmmmm一个一个一个一个一个gggggeeeeeR::R:::eeRpppppppeorrorrrgsoosooojjjjjsteeteeetoccocccrrttrtttyy--y---一个一个bbb一个::B:::vvvvv12112.....00010

注意

您可以使用 Docker Hub 的免费版本创建一个私有存储库和无限的公共存储库。有关更多信息,请访问 Docker Hub 订阅页面

试用

在本动手实践中,您将学习如何构建 Docker 镜像并将其推送到 Docker Hub 存储库。

注册免费的 Docker 帐户

  1. 如果您尚未创建一个,请前往 Docker Hub 页面注册一个新的 Docker 帐户。

    显示 Sign up 页面的官方 Docker Hub 页面的屏幕截图

    您可以使用 Google 或 GitHub 帐户进行身份验证。

创建您的第一个仓库

  1. 登录到 Docker Hub

  2. 选择右上角的 Create repository (创建存储库) 按钮。

  3. 选择您的命名空间(很可能是您的用户名)并输入作为存储库名称。docker-quickstart

    显示如何创建公共存储库的 Docker Hub 页面的屏幕截图
  4. 将可见性设置为 Public (公共)。

  5. 选择 Create (创建) 按钮以创建存储库。

就是这样。您已成功创建第一个仓库。🎉

此存储库现在是空的。现在,您将通过将镜像推送到该镜像来解决此问题。

使用 Docker Desktop 登录

  1. 下载并安装Docker Desktop(如果尚未安装)。
  2. 在 Docker Desktop GUI 中,选择右上角的 Sign in (登录) 按钮

克隆示例Node.js代码

要创建镜像,您首先需要一个项目。为了快速入门,您将使用 github.com/dockersamples/helloworld-demo-node 中的示例 Node.js 项目。此存储库包含构建 Docker 镜像所需的预构建 Dockerfile。

不要担心 Dockerfile 的细节,因为您将在后面的部分中了解这一点。

  1. 使用以下命令克隆 GitHub 存储库:

    git clone https://github.com/dockersamples/helloworld-demo-node
    
  2. 导航到新创建的目录。

    cd helloworld-demo-node
    
  3. 运行以下命令以构建 Docker 镜像,并换出您的用户名。YOUR_DOCKER_USERNAME

    docker build -t <YOUR_DOCKER_USERNAME>/docker-quickstart .
    

    注意

    确保在命令末尾包含点 (.)。这会告诉 Docker 在何处查找 Dockerfile。docker build

  4. 运行以下命令以列出新创建的 Docker 镜像:

    docker images
    

    您将看到如下所示的输出:

    REPOSITORY                                 TAG       IMAGE ID       CREATED         SIZE
    <YOUR_DOCKER_USERNAME>/docker-quickstart   latest    476de364f70e   2 minutes ago   170MB
    
  5. 通过运行以下命令(将用户名换成您自己的用户名)来启动容器以测试镜像:

    docker run -d -p 8080:8080 <YOUR_DOCKER_USERNAME>/docker-quickstart 
    

    您可以通过使用浏览器访问 http://localhost:8080 来验证容器是否正常工作。

  6. 使用 docker tag 命令标记 Docker 镜像。Docker 标签允许您对镜像进行标记和版本控制。

    docker tag <YOUR_DOCKER_USERNAME>/docker-quickstart <YOUR_DOCKER_USERNAME>/docker-quickstart:1.0 
    
  7. 最后,是时候使用 docker push 命令将新构建的镜像推送到您的 Docker Hub 存储库了:

    docker push <YOUR_DOCKER_USERNAME>/docker-quickstart:1.0
    
  8. 打开 Docker Hub 并导航到您的存储库。导航到 Tags (标记) 部分并查看新推送的镜像。

    显示新添加的镜像标记的 Docker Hub 页面的屏幕截图

在本演练中,您注册了 Docker 帐户,创建了您的第一个 Docker Hub 存储库,并构建、标记了容器镜像并将其推送到 Docker Hub 存储库。

其他资源

后续步骤

现在,您已经了解了容器和镜像的基础知识,可以了解 Docker Compose。