博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用镜像仓库托管自己构建的Docker镜像
阅读量:5462 次
发布时间:2019-06-16

本文共 2348 字,大约阅读时间需要 7 分钟。

自己构建的Docker镜像,默认存储在本机中,Docker有提供某些方式分享这些镜像,但不是主流的镜像分享方式,也有违于开源社区的共享精神。

本文介绍如何使用GitHub托管Dockerfile;使用DockerHub关联GitHub托管的Dockerfile,进行自动化构建,并托管构建后的镜像。

GitHub地址:。

DockerHub地址:。

Dockerfile及镜像构建的相关知识可参考我之前写的几篇博文:

准备工作

注册GitHub和DockerHub。GitHub主要是用于托管源代码(即托管Dockerfile文件);DockerHub主要用于构建和托管镜像。

两个平台都是免费的,但是因为服务器在国外,访问不是很稳定,原因大家都懂。

使用GitHub托管Dockerfile

参考本人的一个Tomcat Dockerfile仓库:

主要步骤:

  1. 新建一个仓库(New repository),例如命名为:docker-tomcat。
  2. 通过git提交(或直接通过界面编辑)源码,目录结构可以参考我的仓库,也可参考一些官方仓库。
  3. 编写 README.md 文件(强烈建议)。

GitHub是个很常用的平台,具体操作这里就不细讲了,网上资料也很多。

使用DockerHub构建并托管镜像

参考本人的一个Tomcat镜像仓库:

主要步骤

  1. 新建一个自动构建(Create Automated Build),关联并验证GitHub账户。再选择GitHub账户中的一个仓库,也就是刚才创建的docker-tomcat仓库。
  2. 打开 Build Settings 选项卡,进行构建细节的配置。构建配置因为比较复杂和重要,我们下面再细讲,这里不展开。配置好后DockerHub会自动根据配置构建镜像并托管。当然你也可以手动触发构建。
  3. 打开 Repo Info 选项卡,编写 Short DescriptionFull DescriptionShort Description 是个简介,Full Description 是详细介绍,建议复制GitHub中的README.md内容。
  4. 通过 Repo Info 选项卡中的Docker Pull Command中显示的命令即可获取本镜像(该命令没指明版本号,请按需添加)。

DockerHub构建配置

主要配置界面

90105-20170711111725368-1822814684.png

配置自动构建

勾选 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 选项卡查看。

该功能的主要作用是监控其他镜像仓库的变动,触发本仓库的自动构建。建议添加父镜像所在的仓库。此后,父镜像所在的仓库的变动都将触发本仓库的自动构建。例如父镜像紧急修复了一个BUG并重新构建了镜像,那么我们的镜像也会跟着重新构建。当然,如果我们镜像已经被某个用户在使用了,那么除非该用户update这个镜像,否则该镜像不会自动更新至最新版本。

Build Triggers

DockerHub提供Http接口供有需要的用户触发构建。例如你有个自动化脚本想要触发仓库的自动化构建,就可以通过本功能实现。

使用其他仓库托管镜像

除了DockerHub外,还有很多平台提供镜像托管服务,比如我使用的阿里云容器Hub:。

参考本人在阿里云开发者平台上托管的一个Tomcat镜像仓库:。

获取这个平台的镜像时,必须带上平台域名,例如:

$ docker pull registry.cn-hangzhou.aliyuncs.com/dfengwei/docker-tomcat

第三方平台的镜像仓库的配置方式大多都和DockerHub类似,源码托管(Dockerfile托管)的方式也有多种。为了不重复劳动,我在阿里云容器Hub上关联的是上面配置的GitHub仓库。也就是说,我用同一份Dockerfile会生成两份镜像,一份在DockerHub上,一份在阿里云容器Hub上,两份镜像的内容其实是一样的,不过pull的方式略有不同。

当然,Dockerfile源码托管的方式除了GitHub外,也有很多选择余地,这里不再展开。

posted on
2017-07-11 14:50 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/dfengwei/p/7150455.html

你可能感兴趣的文章
HttpClientUitl工具类
查看>>
Could not find or load main class
查看>>
VC 预定义宏
查看>>
indexOf()
查看>>
dom4j对xml读取操作
查看>>
Yii2.0实现微信公众号后台开发
查看>>
Shell 传递参数
查看>>
Ibatis 泛型化dao模版
查看>>
hrbust 1133 (kruskal)
查看>>
vue 接口统一管理
查看>>
margin 相关 bug 系列
查看>>
模拟+贪心 SCU 4445 Right turn
查看>>
2012 Multi-University #7
查看>>
第五章 循环结构反思
查看>>
WebConfig配置文件有哪些不为人知的秘密?
查看>>
自动控制原理的三不管地带之——开闭环函数特征方程原理
查看>>
HDU 2001 计算亮点间的距离
查看>>
spring学习笔记--quartz和定时任务执行
查看>>
ASP.NET页面刷新样式改变解决方法
查看>>
Redis- 简单操作命令
查看>>