阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

使用镜像仓库托管自己构建的Docker镜像

222次阅读
没有评论

共计 3170 个字符,预计需要花费 8 分钟才能阅读完成。

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

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

GitHub 地址:https://github.com。
DockerHub 地址:https://hub.docker.com。

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

  1. Docker 镜像构建的两种方式。
  2. 官方 Tomcat 镜像 Dockerfile 分析及镜像使用。
  3. 构建自己的 Tomcat 镜像。

准备工作

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

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

使用 GitHub 托管 Dockerfile

参考本人的一个 Tomcat Dockerfile 仓库:https://github.com/dfengwei/docker-tomcat

主要步骤:

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

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

使用 DockerHub 构建并托管镜像

参考本人的一个 Tomcat 镜像仓库:https://hub.docker.com/r/dfengwei/docker-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 构建配置

主要配置界面

使用镜像仓库托管自己构建的 Docker 镜像

配置自动构建

勾选 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: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

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计3170字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中