共计 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