docker 1.8.2 源代码编译

编译docker的必要条件

  这阵子在公司搞docker container这些技术,docker编译网上查了一下木有靠谱的。只好自己动手丰衣足食了。

  声明:你编译docker不需要git pull它的源码,必备条件只有一个,就是你有一台能pull镜像的docker主机就行了。

本人环境是VMware下CentOS Linux release 7.1.1503 (Core) [x86_64]

以下为编译过程的具体记录

1.pull docker-dev:1.8.2的镜像

[[email protected] docker]# docker pull docker-dev:1.8.2
Pulling repository docker-dev
ab03141ac2e9: Pulling dependent layers
d3a1f33e8a5a: Download complete
c22013c84729: Download complete
d74508fb6632: Download complete
91e54dfb1179: Download complete
758970a22420: Download complete
62fd5b9e4d35: Download complete
944fcdea21b1: Download complete
ab975b7812f0: Download complete
0f860819eb9c: Download complete
adcf22790962: Download complete
c79325ee5872: Download complete
115d2806e84a: Download complete
1705282a2f45: Download complete
5d8bf41b5802: Download complete
3388f79cde5c: Download complete
979009c412cd: Download complete
11eaa2b57f9e: Download complete
b3ff0a3e16f1: Download complete
a7cc3d81aeed: Download complete
94b8248ce242: Download complete
006aa3cb8d92: Download complete
5ce85bb004d1: Download complete
28907ad32b10: Download complete
919096bcd935: Download complete
2a138d63ee40: Download complete
2b2733893e80: Download complete
ab03141ac2e9: Download complete
906727032fc8: Download complete
c296523a5eea: Download complete
f38d4f3bc631: Download complete
b5564cf04aab: Download complete
cd3a9bdbad49: Download complete
a223a267d4b0: Download complete
0912427504fa: Download complete
9d153769f49b: Download complete
4ec1b8c4c270: Download complete
7ca719ee5f14: Download complete
3b994c4a49de: Download complete
062d730e6007: Download complete
ac1892714a82: Download complete
ac43d240b0a2: Download complete
dbab3fbdd774: Download complete
79d657b6d894: Download complete
725fa96f33ab: Download complete
ad50f4526814: Download complete
ee0aa2630de6: Download complete
a9314782dbbf: Download complete
23f7502170cd: Download complete
8bfc29dd7728: Download complete
Status: Downloaded newer image for docker-dev:1.8.2

2.创建一个目录存放docker编译后生成的文件

[[email protected] home]# mkdir -p /home/dockerbuild/bundles
[[email protected] home]# cd /home/dockerbuild/

3.运行刚刚pull好的docker-dev镜像,然后在容器里进行docker的编译工作

[[email protected] home]# docker run --rm -it --privileged   -e BUILDFLAGS -e DOCKER_CLIENTONLY -e DOCKER_EXECDRIVER -e DOCKER_EXPERIMENTAL   -e DOCKER_GRAPHDRIVER -e DOCKER_STORAGE_OPTS -e DOCKER_USERLANDPROXY -e TESTDIRS -e TESTFLAGS -e TIMEOUT   -v /home/dockerbuild/bundles:/go/src/github.com/docker/docker/bundles docker-dev:1.8.2 bash

[email protected]:/go/src/github.com/docker/docker# hack/make.sh binary

---> Making bundle: binary (in bundles/1.8.2/binary)
Building: bundles/1.8.2/binary/docker-1.8.2
Created binary: bundles/1.8.2/binary/docker-1.8.2

4.查看编译输出并验证编译结果

[email protected]:/go/src/github.com/docker/docker# ls -l bundles/1.8.2/binary/
total 21104
lrwxrwxrwx 1 root root       12 Sep 15 10:20 docker -> docker-1.8.2
-rwxr-xr-x 1 root root 21599668 Sep 15 10:20 docker-1.8.2
-rw-r--r-- 1 root root       47 Sep 15 10:20 docker-1.8.2.md5
-rw-r--r-- 1 root root       79 Sep 15 10:20 docker-1.8.2.sha256

  上述可以看到在容器内,bundles目录已经有了编译好的docker程序文件了。退出容器后,在本机/home/dockerbuild/bundles/1.8.2/binary目录下会得到一个编译完毕的docker。

[[email protected] dockerbuild]# cd bundles/
[[email protected] bundles]# ls
1.8.2  latest
[[email protected] bundles]# cd 1.8.2/
[[email protected] 1.8.2]# ls
binary
[[email protected] binary]# ls -l
total 21104
lrwxrwxrwx 1 root root       12 Sep 15 18:20 docker -> docker-1.8.2
-rwxr-xr-x 1 root root 21599668 Sep 15 18:20 docker-1.8.2
-rw-r--r-- 1 root root       47 Sep 15 18:20 docker-1.8.2.md5
-rw-r--r-- 1 root root       79 Sep 15 18:20 docker-1.8.2.sha256
[[email protected] binary]# ./docker version
Client:
 Version:      1.8.2
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   0a8c2e3
 Built:        Tue Sep 15 10:20:40 UTC 2015
 OS/Arch:      linux/amd64
Error response from daemon: client and server don‘t have same version (client API version: 1.20, server API version: 1.19)

题外话

  官方之所以选择在容器内编译docker的方式是因为容器内部已经集成好编译docker所需的环境及组件了,我也懒得在centos里将依赖一个个装了。

本文到此结束,谢谢。

时间: 2024-11-14 12:46:35

docker 1.8.2 源代码编译的相关文章

Ubuntu通过源代码编译安装Octave 4.0

本教程/笔记,意在指导在Ubuntu及其它Linux系统上怎样通过源代码安装Octave. Octave简单介绍 Octave是GNU旗下取代matlab的数学工具软件,语法与matlab高度兼容.而且支持一些独有的更清晰更符合Linux社区习惯的语法. 尽管在一些详细工具包和部分特性.效率上不如matlab.可是对于一般用户,它是matlab的一个有效的合法的免费的替代工具. 3.8版本号之前官方没有GUI界面,这无疑是它在普及方面的一个重大阻碍,让想使用GUI,必须下载第三方的工具(如qto

源代码编译MYSQL5.6 环境下的MHA+KEEPALIVED的安装和维护

前    言 摘   要 MHA 是当 master 出现故障,挑选一个 slave 作为新的 master 并构建成新的 主从架构的管理工具.从 master 出现故障到构建成新的主从架构时间是 10-30 秒.在 master 出现故障时可能会出现 slave 同步的数据不一致的现象,此工具 可以自动应用差异的中继日志到其他 slave 上保证数据的一致性. 一.Mha 优点 1.M aster crash 时可以快速的进行故障切换. 9-12 秒内可以检测到 master 故障, 7-10

3. Gradle源代码编译以及源代码分析

一. Gradle简介 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具.它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置.---来源于百度 对于自己而言,作为一个Android程序员,我自己使用就是用它来编译android程序,以前用ant,现在用gradle. 但是个人觉得在android studio gradle属性又多又乱,不知道总共有哪些属性:同时对于框架,自己也不喜欢黑盒使用它,总觉得心里没

Jenkins 源代码编译

最近一直想写一个关于 Jenkins 管理的 InelliJ 插件,但是尝试很多次总是在登录认证上面失败,各种办法都不起作用,而且官方的文档含糊不清,就动起了从源代码编译在开发环境中进行调试. 废话少说,下面开始说明 Jenkins 的编译过程. 环境准备 首先,JDK 环境是必须的了,而且要设置好 JAVA_HOME 环境变量,因为 Maven 会使用到,我这里使用的是最新的 Java 8 1.8.0_112. 然后需要的就是 Maven 了,我这里使用的是 3.3.9 由于要使用 Git 来

Storm-0.9.2-incubating源代码编译打包

近期遇到一些同学询问Storm-0.9.2-incubating源代码编译打包的问题,现将编译步骤说明例如以下: 1.凝视掉project各pom文件里关于maven插件(maven-gpg-plugin)的内容,目的是规避错误: 当然,该错误也能够忽略,即能够不进行上述凝视操作 2.在project根文件夹下运行maven命令: mvn clean compile package -P dist -Dmaven.test.skip=true 3.进入文件夹:storm-dist/binary,

3DSlicer源代码编译过程vs2008+windows xp [转]

一 下载QT源代码编译 1.  简述   在 Windows2000/xp/vista 下,安装 VS2008, QT 4.7.2 :并在 VS2008上建立 QT 的集成开发环境,利用 VS2008 开发环境开发,调试 QT 程序:2. 所需程序   VS2008以及VS2008Sp1                                  //  VS2008 的安装程序:   qt-everywhere-opensource-src-4.7.4.tar.gz          /

Nginx+Php-fpm+MySQL+Redis源代码编译安装指南

说明:本教程主要包括以下三个部分: 1.      源代码编译安装Nginx 2.      源代码编译安装php以及mysql.redis扩展模块 3.      配置虚拟主机 文中所涉及安装包程序均提供下载链接,欢迎使用 运行环境以及前置条件:Ubuntu 12.04 LTS 已安装g++编译环境 所有源程序路径位于:[email protected]:/home/shihai/Desktop/Nginx文件夹下,如下图所示: 程序安装路径位于:/usr/local文件夹下 第一部分:安装N

源代码编译

CentOS程序包管理器之编译安装 为什么要进行源代码编译安装? 1.对应的程序包并不能直接获取到: 2.已经编译好的二进制中,尚不包含我们所需要的功能: 3.已经编译好的二进制中,包含的功能太多,我们并不需要: 源代码包有两种: 由程序员直接打包的源代码:name-VERSION.tar.gz 由第三方利用rpm工具制作的rpm源代码包:name-VERIONS-release.src.rpm /usr/src/name-VERIONS 源代码的组织形式: 1.多文件组成 2.文件中的代码之间

Linux DNS源代码编译安装(五)

DNS源代码的编译安装. 官方bind下载地址:www.isc.org这里我们编译的是bind-9.9.5.tar.gz版本 1.编译环境  Desktop Platform Development  Development tools  Server Platform Development 2.展开安装包查看编译命令 首先我们应该先看下服务器时间,[[email protected] ~]# tar xf bind-9.9.5.tar.gz -----展开安装包[[email protect