面向 WEB 开发人员的 Docker(八):将 Docker 镜像推送到仓库
Docker Hub 是 Docker 的 Github,是 Docker 官方维护了一个公共仓库。上面包括很多现成的镜像,如 Apache
、PHP
、Node.js
、Python
、MySQL
或 MongoDB
等,不需要自己的制作镜像。当然你有可以自己制作镜像推送到仓库。
为什么要把送镜像推送到 Docker Hub?
前面介绍了制作 Dockerfile
,实际上 Dockerfile
是可以随着项目一起存储到项目仓库中,以便在开发期间或作为生产部署过程的一部分构建应用程序。而推送到 Docker Hub 有一下几个好处:
与项目团队一起分发预构建和测试过的镜像变得更容易
镜像可以在生产服务器上拉取,这样部署更加简单和快速
发布的镜像任何人都可以使用,应用程序可以与所有的用户、客户端和其他开发人员共享。
Docker Hub 允许创建任意数量的公共仓库,镜像中的应用程序大部分时候可以是编译后的,不一定是源代码。
类 Docker Hub 产品
除了 Docker Hub ,还有很多提供类似服务的平台,每个平台都有各自的特色:
这里我们推荐使用 Docker Hub,但其他存储库的过程类似。
镜像名称和标签
Docker Hub 为每个镜像分配了一个唯一的名称:
以下部分参考了在上一节中创建的 hellonodejs
镜像,并将该镜像推动到仓库。
最新的默认标签应用于任何新图像。在拉取镜像时未指定标签时下载该版本。
标签是镜像的不同变体,在运行 MySQL 容器时第一次看到这些 - 官方 MySQL 镜像提供了8.0.25
、8.0
、latest
的各种版本。
每个镜像都有一个默认标签latest
,表示最新的版本,在拉取镜像时未指定标签时下载就是该版本。
单个镜像可以应用任意数量的标签,镜像开发人员有责任适当地标记镜像并确保最新的稳定版本使用最新的 ,让标签具有明显的意义。
创建 Docker Hub 仓库
首先需要是在 Docker Hub
上创建一个仓库。登录https://hub.docker.com/,然后点击Repositories
创建 Repository(或者直接打开https://hub.docker.com/repository/create):
输入完信息后,点击俺就 Create
即可完成创建。
本地登录
使用 Docker Hub 凭据登录开发 PC,使用:
或者,可以从 Windows 和 macOS 上的 Docker 桌面菜单中选择登录。
如果需要登录到别的镜像仓库(不是 Docker Hub),请使用:
构建应用程序镜像
现在回到上节创建的项目,从应用程序的 Dockerfile
构建镜像。上一节示例:
确定是否构建成功且正确,可以使用一下命令:
查看构建的镜像,如下:
为镜像打 Tag
现在可以使用用户名、仓库名称和标签名称标记镜像,以准备好推送到 Docker Hub,例如:
查看:
标记版本指向 hellonodejs 原始版本,可以为同一图像创建任意数量的标签,例如:
docker image build -t
选项可以指定一个完全限定的名称,因此可以在单个命令中构建和标记镜像:
docker image build -t quintiontang/hellonodejs:myfirst
然而,在标记之前构建和测试是比较安全的——这样可以避免不小心推送一个失败的镜像。
推送到 Docker Hub
使用以下命令将标记的镜像推送到 Docker Hub:
推送之前需要下登录,
docker login
再次单击 Docker Hub 中的仓库链接查看推送的进项,推送的镜像将在以下网址可用:
本文推送的地址是:
分发镜像
现在可以擦除系统中的所有映像(当然,如果绝对确定的话……) docker system prune -af
然后可以从 Docker Hub 镜像启动容器,例如:
本文完
专辑内容
Docker 的优势很容易让 Web 开发人员所忽略。对于开发运维来说,它被认为太过技术性、没有必要。术语可能难以理解。教程从来没有解释如何在开发过程中使用 Docker。在这里带大家一起来感受 Docker 在 WEB 开发中应用。
版权声明: 本文为 InfoQ 作者【devpoint】的原创文章。
原文链接:【http://xie.infoq.cn/article/1eb1a2f7facbadadba3b3ad0a】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论