什么是注册表?
解释
既然您知道什么是容器镜像以及它是如何工作的,您可能想知道 - 您将这些镜像存储在哪里?
好吧,您可以将容器镜像存储在计算机系统上,但是如果您想与朋友共享它们或在另一台计算机上使用它们怎么办?这就是镜像注册表的用武之地。
镜像注册表是存储和共享容器镜像的集中位置。它可以是公共的,也可以是私有的。Docker Hub 是任何人都可以使用的公共注册表,并且是默认注册表。
虽然 Docker Hub 是一个流行的选项,但目前还有许多其他可用的容器注册表可用,包括 Amazon Elastic Container Registry (ECR)、Azure Container Registry (ACR) 和 Google Container Registry (GCR).您甚至可以在本地系统或组织内部运行私有注册表。例如,Harbor、JFrog Artifactory、GitLab Container registry 等。
注册中心与存储库
当您使用 registry 时,您可能会听到术语 registry 和 repository (存储库),就好像它们是可以互换的一样。尽管它们是相关的,但它们并不完全是一回事。
注册表是存储和管理容器镜像的集中位置,而存储库是注册表中相关容器镜像的集合。将其视为一个文件夹,您可以在其中根据项目组织镜像。每个存储库都包含一个或多个容器镜像。
下图显示了注册表、存储库和镜像之间的关系。
注意
您可以使用 Docker Hub 的免费版本创建一个私有存储库和无限的公共存储库。有关更多信息,请访问 Docker Hub 订阅页面。
试用
在本动手实践中,您将学习如何构建 Docker 镜像并将其推送到 Docker Hub 存储库。
注册免费的 Docker 帐户
如果您尚未创建一个,请前往 Docker Hub 页面注册一个新的 Docker 帐户。
您可以使用 Google 或 GitHub 帐户进行身份验证。
创建您的第一个仓库
登录到 Docker Hub。
选择右上角的 Create repository (创建存储库) 按钮。
选择您的命名空间(很可能是您的用户名)并输入作为存储库名称。
docker-quickstart
将可见性设置为 Public (公共)。
选择 Create (创建) 按钮以创建存储库。
就是这样。您已成功创建第一个仓库。🎉
此存储库现在是空的。现在,您将通过将镜像推送到该镜像来解决此问题。
使用 Docker Desktop 登录
- 下载并安装Docker Desktop(如果尚未安装)。
- 在 Docker Desktop GUI 中,选择右上角的 Sign in (登录) 按钮
克隆示例Node.js代码
要创建镜像,您首先需要一个项目。为了快速入门,您将使用 github.com/dockersamples/helloworld-demo-node 中的示例 Node.js 项目。此存储库包含构建 Docker 镜像所需的预构建 Dockerfile。
不要担心 Dockerfile 的细节,因为您将在后面的部分中了解这一点。
使用以下命令克隆 GitHub 存储库:
git clone https://github.com/dockersamples/helloworld-demo-node
导航到新创建的目录。
cd helloworld-demo-node
运行以下命令以构建 Docker 镜像,并换出您的用户名。
YOUR_DOCKER_USERNAME
docker build -t <YOUR_DOCKER_USERNAME>/docker-quickstart .
注意
确保在命令末尾包含点 (.)。这会告诉 Docker 在何处查找 Dockerfile。
docker build
运行以下命令以列出新创建的 Docker 镜像:
docker images
您将看到如下所示的输出:
REPOSITORY TAG IMAGE ID CREATED SIZE <YOUR_DOCKER_USERNAME>/docker-quickstart latest 476de364f70e 2 minutes ago 170MB
通过运行以下命令(将用户名换成您自己的用户名)来启动容器以测试镜像:
docker run -d -p 8080:8080 <YOUR_DOCKER_USERNAME>/docker-quickstart
您可以通过使用浏览器访问 http://localhost:8080 来验证容器是否正常工作。
使用
docker tag
命令标记 Docker 镜像。Docker 标签允许您对镜像进行标记和版本控制。docker tag <YOUR_DOCKER_USERNAME>/docker-quickstart <YOUR_DOCKER_USERNAME>/docker-quickstart:1.0
最后,是时候使用
docker push
命令将新构建的镜像推送到您的 Docker Hub 存储库了:docker push <YOUR_DOCKER_USERNAME>/docker-quickstart:1.0
打开 Docker Hub 并导航到您的存储库。导航到 Tags (标记) 部分并查看新推送的镜像。
在本演练中,您注册了 Docker 帐户,创建了您的第一个 Docker Hub 存储库,并构建、标记了容器镜像并将其推送到 Docker Hub 存储库。
其他资源
后续步骤
现在,您已经了解了容器和镜像的基础知识,可以了解 Docker Compose。