3.4 共享应用程序
现在我们已经构建了一个镜像,让我们分享它吧!要共享 Docker 镜像,您必须使用 Docker存储库。默认存储库是 Docker Hub,我们使用的所有镜像都来自这里。
Docker ID
Docker ID 允许您访问 Docker Hub,它是世界上最大的容器镜像库和社区。如果您没有Docker ID ,请免费创建一个。
创建一个存储库
要推送镜像,我们首先需要在 Docker Hub 上创建一个存储库。
- 注册或登录Docker Hub。
- 单击创建存储库按钮。
- 对于存储库名称,请使用
getting-started
. 确保可见性为Public
。 - 点击创建按钮!
如果您查看下图,可以看到一个示例**Docker 命令。**此命令将推送到此 存储库。
推送镜像
- 在命令行中,尝试运行您在 Docker Hub 上看到的 push 命令。请注意,您的命令将使用您的命名空间,而不是“docker”。
$ docker push docker/getting-started
The push refers to repository [docker.io/docker/getting-started]
An image does not exist locally with the tag: docker/getting-started
为什么失败了?push 命令正在寻找一个名为 docker/getting-started 的镜像,但没有找到。如果你运行docker image ls
,你也不会看到一个。
要解决此问题,我们需要“标记”我们构建的现有镜像以给它另一个名称。
- 使用命令登录到 Docker Hub
docker login -u YOUR-USER-NAME
。 - 使用
docker tag
命令为getting-started
镜像指定一个新名称。请务必换出 YOUR-USER-NAME
您的 Docker ID。
$ docker tag getting-started YOUR-USER-NAME/getting-started
了解有关docker 标签的更多信息。
- 现在再次尝试您的推送命令。如果您要从 Docker Hub 复制值,则可以删除该
tagname
部分,因为我们没有向镜像名称添加标签。如果不指定标签,Docker 将使用名为latest
.
$ docker push YOUR-USER-NAME/getting-started
在新实例上运行镜像
现在我们的镜像已经构建并推送到存储库中,让我们尝试在一个从未见过这个容器镜像的全新实例上运行我们的应用程序!为此,我们将使用 Play with Docker。
- 打开浏览器玩 Docker。
- 单击登录,然后从下拉列表中选择docker 。
- 连接到您的 Docker Hub 帐户。
- 登录后,单击左侧栏中的“**添加新实例”选项。**如果您没有看到它,请将您的浏览器扩大一点。几秒钟后,一个终端窗口将在您的浏览器中打开。
- 在终端中,启动您刚推送的应用程序。
$ docker run -dp 3000:3000 YOUR-USER-NAME/getting-started
您应该看到镜像被拉下并最终启动!
- 当它出现时单击 3000 标记链接,您应该会看到经过您修改的应用程序!万岁!如果没有显示 3000 标记链接,您可以单击“打开端口”按钮并输入 3000。