什么是注册表?

说明

既然你已经了解了什么是容器镜像以及它是如何工作的,你可能会想——这些镜像应该存储在哪里呢?

嗯,你可以在你的计算机系统上存储你的容器镜像,但是如果你想和你的朋友分享它们,或者在另一台机器上使用它们呢?这就是镜像仓库发挥作用的地方了。

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

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

注册表与仓库

在使用注册表时,您可能会听到 registryrepository 这两个术语,好像它们可以互换使用。虽然它们相关,但并不完全相同。

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

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

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. Select the Create repository button in the top-right corner.

  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 图形用户界面中,选择右上角的 登录 按钮

克隆示例 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. 通过运行以下命令启动容器以测试镜像(请将 username 替换为您自己的用户名):

    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 部分并查看您新推送的镜像。

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

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

其他资源

后续步骤

既然您已经了解了容器和镜像的基础知识,那么您准备好学习 Docker Compose 了。