分享自己创建的 Docker 镜像

zr - 2024-02-04 22:52:41 - 所属文档:Docker 快速入门文档

现在我们已经构建了自己的镜像,是时候把它分享给其他人使用了!要分享 Docker 镜像,需要使用 Docker registry,默认的 registry 是 Docker Hub

备注:本文档不对 registryrepository 进行翻译,出现它们的地方都保留原始英文。
Registry 和 Repository 的区别

  • Registry 的官方解释:The Registry is a stateless, highly scalable server side application that stores and lets you distribute Docker images. The Registry is open-source, under the permissive Apache license. Registry 是一个无状态、高可用的服务端程序,用于存储和分发 Docker 镜像。同时它是一个基于 Apache license 的开源程序。正是由于它是开源的,所有除了 Docker 官方的 registry (即:Docker Hub)还有很多第三代的 registry,甚至你还可以自己部署一个 registry。
  • Repository 是 registry 内部真正保存具体每个镜像内容的地方。

创建 Repository

本文以 Docker 默认的 registry,也就是 Docker Hub 为例进行说明。要推送镜像,首先需要在 Docker Hub 上创建一个 Repository。

  1. 访问 Docker Hub 并登录
  2. 点击 Create Repository 按钮
  3. Repository 名称使用 todo-app,将 Visibility 设置为 Public
  4. 点击 Create 按钮

在页面的右侧会看到一个名为 Docker commands 的部分。列出了一个示例命令,参考示例命令将自己的镜像推送到仓库。

Docker command with push example

推送自己的镜像

  1. 执行 docker login -u YOUR-USER-NAME 命令,登录到 Docker Hub

  2. 使用 docker tag 命令为 todo-app 镜像指定一个新名称。确保用您的 Docker ID 替换 YOUR-USER-NAME

    # 用你的 Docker ID 替换 `YOUR-USER-NAME` docker tag todo-app YOUR-USER-NAME/todo-app
  3. 使用 docker push 推送镜像。如果不指定标签,则 Docker 将默认使用名为 latest 的标签

    # 用你的 Docker ID 替换 `YOUR-USER-NAME` docker push YOUR-USER-NAME/todo-app

运行刚刚推送到仓库的镜像

现在,我们已经将镜像推送到 registry 中,如果其他人要使用我们分享的镜像,就可以通过执行以下命令来使用了:

# 用你的 Docker ID 替换 `YOUR-USER-NAME` docker run -dp 3000:3000 YOUR-USER-NAME/todo-app

回顾

在本节中,学习了如何通过将镜像推送到 Docker Hub 这个默认的 registry 来分享我们自己的镜像。

现在,让我们回过头来看看上一节 回顾 中提到的其中一个的小问题:重新启动容器时,会丢失所有待办事项列表数据。下一节将介绍如何解决这个问题。

原始资料:Sharing Our Application