什么是镜像仓库?

解释

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

你可以将容器镜像存储在自己的计算机系统上,但如果你想与朋友共享或在另一台机器上使用它们怎么办?这时就需要用到镜像仓库了。

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

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

镜像仓库与仓库

在使用镜像仓库时,你可能会听到 registry(镜像仓库)和 repository(仓库)这两个术语,就好像它们可以互换使用一样。尽管它们相关,但并不完全相同。

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

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

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. 将可见性设置为 Public(公开)。

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

大功告成。你已成功创建了你的第一个仓库。🎉

这个仓库目前是空的。现在,通过向其中推送一个镜像来解决这个问题。

使用 Docker Desktop 登录

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

克隆示例 Node.js 代码

为了创建镜像,你首先需要一个项目。为了快速入门,你将使用一个位于 github.com/dockersamples/helloworld-demo-node 的示例 Node.js 项目。这个仓库包含了一个预先构建好的 Dockerfile,这是构建 Docker 镜像所必需的。

不用担心 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 
    

    你可以使用浏览器访问 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 了。

页面选项