3月 152018
 

官方文档:

https://github.com/docker/docker-ce-packaging/tree/master/rpm

 

环境搭建:

安装并启动docker就行:

 

命令很简单:

 

打包原理:

从make命令说起,通过docker容器对engine  cli分别进行打包,通过git获取版本号信息,通过docker-ce-packaging/rpm/Dockerfile.x86_64 构建一个基于centos:7 的容器镜像,镜像中安装编译环境(golang),容器挂载外部的一些目录,即,输入来自于外部目录,编译结果输出到外部目录;容器镜像直接启动rpmbuild命令进行构建,构建的详细步骤都在rpm的spec文件中,构建过程中还需要下载有些其他的源码

 

部分细节:

rpmbuild 命令:

 

容器挂载的外部目录:

 

问题记录:

  1. git 版本需要支持 -C 选项
  2. engine 的路径不小心写错了,导致engine的源码文件没有打进去,修改后OK

 

构建优化:

  1. 将github.com 解析到自己的代理服务器,加速下载构建中依赖的代码
  2. 将Dockerfile.x86_64中golang安装包下载地址修改为国内地址,只需将golang.org 修改为golang.google.cn 即可,加速下载golang安装包,当然,更快的办法是改为本地的地址
  3. 更快的办法是,自己build一个自己的环境,用完也不要销毁,每次自己直接执行rpmbuild -ba docker-ce.spec 就行了,不过注意:
    1. 构建过程中需要git clone一些代码,如果目录已经存在,就报错的,所以,可以做一个假的git,使得目录已存在就不再clone,这样还快些

 

 Posted by at 下午 5:25

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

(required)

(required)

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据