分享自己创建的 Docker 镜像
zr - 2024-02-04 22:52:41 - 所属文档:Docker 快速入门文档
现在我们已经构建了自己的镜像,是时候把它分享给其他人使用了!要分享 Docker 镜像,需要使用 Docker registry,默认的 registry 是 Docker Hub
备注:本文档不对
registry
和repository
进行翻译,出现它们的地方都保留原始英文。
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。
- 访问 Docker Hub 并登录
- 点击 Create Repository 按钮
- Repository 名称使用
todo-app
,将 Visibility 设置为Public
- 点击 Create 按钮
在页面的右侧会看到一个名为 Docker commands 的部分。列出了一个示例命令,参考示例命令将自己的镜像推送到仓库。
推送自己的镜像
-
执行
docker login -u YOUR-USER-NAME
命令,登录到 Docker Hub -
使用
docker tag
命令为todo-app
镜像指定一个新名称。确保用您的 Docker ID 替换YOUR-USER-NAME
。# 用你的 Docker ID 替换 `YOUR-USER-NAME` docker tag todo-app YOUR-USER-NAME/todo-app
-
使用
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 来分享我们自己的镜像。
现在,让我们回过头来看看上一节 回顾
中提到的其中一个的小问题:重新启动容器时,会丢失所有待办事项列表数据。下一节将介绍如何解决这个问题。