什么是镜像仓库?
解释
既然你已经了解了容器镜像是什么以及它是如何工作的,你可能会想——这些镜像存储在哪里呢?
你可以将容器镜像存储在自己的计算机系统上,但如果你想与朋友共享或在另一台机器上使用它们怎么办?这时就需要用到镜像仓库了。
镜像仓库是存储和共享容器镜像的集中位置。它可以是公共的或私有的。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(仓库)是镜像仓库中相关容器镜像的集合。把它想象成一个文件夹,你可以根据项目组织镜像。每个仓库包含一个或多个容器镜像。
下图显示了镜像仓库、仓库和镜像之间的关系。
注意
使用免费版本的 Docker Hub,你可以创建一个私有仓库和无限数量的公共仓库。欲了解更多信息,请访问 Docker Hub 订阅页面。
动手尝试
在本实践中,你将学习如何构建 Docker 镜像并将其推送到 Docker Hub 仓库。
注册一个免费的 Docker 账户
如果你还没有创建账户,请前往 Docker Hub 页面注册一个新的 Docker 账户。
你可以使用 Google 或 GitHub 账户进行身份验证。
创建你的第一个仓库
登录 Docker Hub。
选择右上角的 创建仓库 按钮。
选择你的命名空间(很可能是你的用户名),然后输入
docker-quickstart
作为仓库名称。将可见性设置为 Public(公开)。
选择 创建 按钮来创建仓库。
大功告成。你已成功创建了你的第一个仓库。🎉
这个仓库目前是空的。现在,通过向其中推送一个镜像来解决这个问题。
使用 Docker Desktop 登录
- 下载并安装 Docker Desktop,如果尚未安装。
- 在 Docker Desktop GUI 中,选择右上角的 Sign in(登录)按钮。
克隆示例 Node.js 代码
为了创建镜像,你首先需要一个项目。为了快速入门,你将使用一个位于 github.com/dockersamples/helloworld-demo-node 的示例 Node.js 项目。这个仓库包含了一个预先构建好的 Dockerfile,这是构建 Docker 镜像所必需的。
不用担心 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 build
命令的末尾包含了点(.)。这告诉 Docker 在哪里找到 Dockerfile。运行以下命令来列出新创建的 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 了。