什么是注册表?

解释

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

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

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

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

注册表与仓库

在使用注册表时,您可能会听到注册表仓库这两个词,就好像它们是可互换的。虽然它们是相关的,但并不完全相同。

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

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

IIIIImmmmmaaaaagggggeeeeeR::R:::eeRpppppppeorrorrrgsoosoooiijjijjjsteeteeetoccocccrrttrtttyy--y---aabbbA::B:::vvvvv12112.....00010

注意

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

试一试

在本动手操作中,您将学习如何构建 Docker 镜像并将其推送到 Docker Hub 仓库。

注册免费的 Docker 账户

  1. 如果您还没有创建,请前往 Docker Hub 页面注册一个新的 Docker 账户。

    Screenshot of the official Docker Hub page showing the Sign up page

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

创建您的第一个仓库

  1. 登录 Docker Hub

  2. 选择右上角的创建仓库按钮。

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

    Screenshot of the Docker Hub page that shows how to create a public repository
  4. 将可见性设置为公开

  5. 选择创建按钮创建仓库。

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

这个仓库现在是空的。您现在将通过向其推送镜像来解决这个问题。

使用 Docker Desktop 登录

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

克隆 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 build 命令的末尾包含点(.)。这告诉 Docker 在哪里查找 Dockerfile。

  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 
    

    您可以通过在浏览器中访问 https://127.0.0.1:8080docker tag 命令标记 Docker 镜像。Docker 标签允许您对镜像进行标记和版本控制。

    docker tag <YOUR_DOCKER_USERNAME>/docker-quickstart <YOUR_DOCKER_USERNAME>/docker-quickstart:1.0 
    
  6. 最后,使用 docker push 命令将新构建的镜像推送到您的 Docker Hub 仓库。

    docker push <YOUR_DOCKER_USERNAME>/docker-quickstart:1.0
    
  7. 打开 Docker Hub 并导航到您的仓库。导航到**标签**部分,查看您新推送的镜像。

    Screenshot of the Docker Hub page that displays the newly added image tag

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

其他资源

下一步

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