共计 3170 个字符,预计需要花费 8 分钟才能阅读完成。
自己构建的 Docker 镜像,默认存储在本机中,Docker 有提供某些方式分享这些镜像,但不是主流的镜像分享方式,也有违于开源社区的共享精神。
本文介绍如何使用 GitHub 托管 Dockerfile;使用 DockerHub 关联 GitHub 托管的 Dockerfile,进行自动化构建,并托管构建后的镜像。
GitHub 地址:https://github.com。
DockerHub 地址:https://hub.docker.com。
Dockerfile 及镜像构建的相关知识可参考我之前写的几篇博文:
- Docker 镜像构建的两种方式。
- 官方 Tomcat 镜像 Dockerfile 分析及镜像使用。
- 构建自己的 Tomcat 镜像。
准备工作
注册 GitHub 和 DockerHub。GitHub 主要是用于托管源代码(即托管 Dockerfile 文件);DockerHub 主要用于构建和托管镜像。
两个平台都是免费的,但是因为服务器在国外,访问不是很稳定,原因大家都懂。
使用 GitHub 托管 Dockerfile
参考本人的一个 Tomcat Dockerfile 仓库:https://github.com/dfengwei/docker-tomcat
主要步骤:
- 新建一个仓库(
New repository),例如命名为:docker-tomcat。 - 通过 git 提交(或直接通过界面编辑)源码,目录结构可以参考我的仓库,也可参考一些官方仓库。
- 编写
README.md文件(强烈建议)。
GitHub 是个很常用的平台,具体操作这里就不细讲了,网上资料也很多。
使用 DockerHub 构建并托管镜像
参考本人的一个 Tomcat 镜像仓库:https://hub.docker.com/r/dfengwei/docker-tomcat
主要步骤
- 新建一个自动构建(
Create Automated Build),关联并验证 GitHub 账户。再选择 GitHub 账户中的一个仓库,也就是刚才创建的 docker-tomcat 仓库。 - 打开
Build Settings选项卡,进行构建细节的配置。构建配置因为比较复杂和重要,我们下面再细讲,这里不展开。配置好后 DockerHub 会自动根据配置构建镜像并托管。当然你也可以手动触发构建。 - 打开
Repo Info选项卡,编写Short Description和Full Description。Short Description是个简介,Full Description是详细介绍,建议复制 GitHub 中的 README.md 内容。 - 通过
Repo Info选项卡中的 Docker Pull Command 中显示的命令即可获取本镜像(该命令没指明版本号,请按需添加)。
DockerHub 构建配置
主要配置界面

配置自动构建
勾选 When active, builds will happen automatically on pushes. 复选框。当 GitHub 中对应的文件变动后,会自动推送给 DockerHub,DockerHub 会自动重新构建镜像。
添加 Trigger
先解释下各列的含义(可以点击界面上的 Show more 按钮查看英文版的简单说明):
| 字段 | 说明 |
|---|---|
| Type | 指 GitHub 中的 Dockerfile 的版本,可以是 Branch 或 Tag。Branch 和 Tag 是 git 中的概念,不明白的请自行百度。 |
| Name | 如果 Type 选的是 Branch,请固定使用 master 作为值;如果 Type 选的是 Tag,请使用一个正则表达式做为值,用于匹配 tag。 |
| Dockerfile Location | Dockerfile 路径,这个估计大家都理解。/ 对应的是 GitHub 中仓库的根路径。例如我的 Tomcat8.5 Dockerfile 路径为:/8.5/jre8/Dockerfile |
| Docker Tag Name | 镜像版本标签。标签的命名虽然没有标准,但也请遵循一定的规律。最好是先参考官方的一些镜像标签。 |
DockerHub 提供的这种配置和构建方式十分灵活,多个标签其实可以使用同一个 Dockerfile 文件。构建历史可以通过 Build Details 选项卡查看。
添加 Repository Links
该功能的主要作用是监控其他镜像仓库的变动,触发本仓库的自动构建。建议添加父镜像所在的仓库。此后,父镜像所在的仓库的变动都将触发本仓库的自动构建。例如父镜像紧急修复了一个 BUG 并重新构建了镜像,那么我们的镜像也会跟着重新构建。当然,如果我们镜像已经被某个用户在使用了,那么除非该用户 update 这个镜像,否则该镜像不会自动更新至最新版本。
Build Triggers
DockerHub 提供 Http 接口供有需要的用户触发构建。例如你有个自动化脚本想要触发仓库的自动化构建,就可以通过本功能实现。
使用其他仓库托管镜像
除了 DockerHub 外,还有很多平台提供镜像托管服务,比如我使用的阿里云容器 Hub:https://dev.aliyun.com。
参考本人在阿里云开发者平台上托管的一个 Tomcat 镜像仓库:https://dev.aliyun.com/detail.html?spm=5176.1972343.2.2.599c57159oCWBq&repoId=50185。
获取这个平台的镜像时,必须带上平台域名,例如:
$ docker pull registry.cn-hangzhou.aliyuncs.com/dfengwei/docker-tomcat
第三方平台的镜像仓库的配置方式大多都和 DockerHub 类似,源码托管(Dockerfile 托管)的方式也有多种。为了不重复劳动,我在阿里云容器 Hub 上关联的是上面配置的 GitHub 仓库。也就是说,我用同一份 Dockerfile 会生成两份镜像,一份在 DockerHub 上,一份在阿里云容器 Hub 上,两份镜像的内容其实是一样的,不过 pull 的方式略有不同。
当然,Dockerfile 源码托管的方式除了 GitHub 外,也有很多选择余地,这里不再展开。
更多 Docker 相关教程见以下内容:
Docker 安装应用(CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm
Ubuntu 16.04 服务器上配置使用 Docker http://www.linuxidc.com/Linux/2017-06/145176.htm
Ubuntu 15.04 下安装 Docker http://www.linuxidc.com/Linux/2015-07/120444.htm
Docker 安装实例 http://www.linuxidc.com/Linux/2017-04/142666.htm
Docker 创建基础镜像 http://www.linuxidc.com/Linux/2017-05/144112.htm
在 Ubuntu 15.04 上如何安装 Docker 及基本用法 http://www.linuxidc.com/Linux/2015-09/122885.htm
Ubuntu 16.04 上 Docker 使用手记 http://www.linuxidc.com/Linux/2016-12/138490.htm
使用 Docker 分分钟启动常用应用 http://www.linuxidc.com/Linux/2017-04/142649.htm
Ubuntu 16.04 下 Docker 修改配置文件不生效解决办法 http://www.linuxidc.com/Linux/2017-05/143862.htm
Docker 的详细介绍:请点这里
Docker 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-07/145908.htm






