Ubuntu Docker 源码编译(1.9.1 )详解

Ubuntu Docker 源码编译:

网上对Ubuntu Docker 源码编译的资料有很多,但是对于具体如何操作,和命令的实现不是多细致,经过我一番折腾,终于把源码编译搞定,这里记录下,以便以后使用参考,

一、系统环境

Ubuntu14.04 desktop 64位

二、安装Docker(Docker内编译Docker)

$ sudo apt-get update

$ sudo apt-get install wget

$ wget -qO- https://get.docker.com/ | sh

三、拉取Docker开发环境容器

# docker pull docker-dev:1.9.1

四、下载Docker源码到本地机器

# apt-get install git 

# mkdir -p /home/docker/src 

# cd /home/docker/src 

# git clone https://github.com/docker/docker.git 

# cd docker 

# git checkout v1.9.1

五、编译

其实Docker编译容器内自带了源码,这里第四步将源码下载到本地机器,主要是为了二次开发方便。

可以将开发好的新代码替换容器内原有的代码,进行定制开发。

1. 创建本地编译结果保存目录

# mkdir -p /home/docker/bundles

2. 启动容器,并映射本地代码到容器:

# 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/docker/bundles:/go/src/github.com/docker/docker/bundles \
  -v /home/docker/src:/tmp \
  docker-dev:1.9.1 \
  bash

3. 在容器中编译(此命令在容器中执行):

# cp -a /tmp/docker/* /go/src/github.com/docker/docker/

# hack/make.sh binary

4. 编译完成后,退出容器,检查本地结果路径,已经生成了编译好的Docker可执行文件:

# ls -l /home/docker/bundles

六、验证

# cd /home/docker/bundles/1.9.1/binary

# ./docker version

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • 详解使用Docker容器来源码编译etcd

    背景 etcd是CoreOS公司开发的分布式键值对存储库.在Kubernetes中,我们需要使用etcd作为所有REST API对象的持久化存储. 不幸的是,在github的release中,CoreOS将etcd的二进制可执行文件都放在了亚马逊的S3存储上,在国内访问非常慢.因此,我们只能通过源码编译etcd. 过程 1. 下载etcd源码. $ git clone https://github.com/coreos/etcd.git $ cd etcd 2. 根据实际情况,选择合适的版本.

  • 详解Docker源码编译安装

    最近在尝试阅读Docker源码,一直想弄明白docker关于namespace等的代码的在哪,以及怎么触发.然而在阅读时发现根本找不到代码...想着还是先源码安装下docker,然后边运行边打印些调试信息看看再说 安装之前 Docker源码需在docker容器编译环境中编译,所以先安装docker,安装环境依旧是ubuntu14.04 echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee

  • Ubuntu Docker 源码编译(1.9.1 )详解

    Ubuntu Docker 源码编译: 网上对Ubuntu Docker 源码编译的资料有很多,但是对于具体如何操作,和命令的实现不是多细致,经过我一番折腾,终于把源码编译搞定,这里记录下,以便以后使用参考, 一.系统环境 Ubuntu14.04 desktop 64位 二.安装Docker(Docker内编译Docker) $ sudo apt-get update $ sudo apt-get install wget $ wget -qO- https://get.docker.com/

  • Ubuntu环境源码编译安装xdebug的方法

    本文实例讲述了Ubuntu环境源码编译安装xdebug的方法.分享给大家供大家参考,具体如下: 前面介绍了Ubuntu环境编译安装PHP和Nginx的方法,这里再来讲解一下源码编译安装xdebug的方法. 下载并解压xdebug xdebug下载地址:https://xdebug.org/download.php 我下载的是2.3.3,其实我也不清楚这些版本的区别,就随便下载了一个. cd /usr/local/src wget https://xdebug.org/files/xdebug-2

  • php源码 fsockopen获取网页内容实例详解

    PHP fsockopen函数说明: Open Internet or Unix domain socket connection(打开套接字链接) Initiates a socket connection to the resource specified by target . fsockopen() returns a file pointer which may be used together with the other file functions (such as fgets(

  • HashMap源码中的位运算符&详解

    引言 最近在读HashMap源码的时候,发现在很多运算符替代常规运算符的现象.比如说用hash & (table.length-1) 来替代取模运算hash&(table.length):用if((e.hash & oldCap) == 0)判断扩容后元素的位置等等. 1.取模运算符%底层原理 ​总所周知,位运算&直接对二进制进行运算:而对于取模运算符%:a % b 相当于 a - a / b * b,底层实际上是除法器,究其根源也是由底层的减法和加法共同完成.所以其运行效

  • RocketMQ源码解析topic创建机制详解

    目录 1. RocketMQ Topic创建机制 2. 自动Topic 3. 手动创建--预先创建 通过界面控制台创建 1. RocketMQ Topic创建机制 以下源码基于Rocket MQ 4.7.0 RocketMQ Topic创建机制分为两种:一种自动创建,一种手动创建.可以通过设置broker的配置文件来禁用或者允许自动创建.默认是开启的允许自动创建 autoCreateTopicEnable=true/false 下面会结合源码来深度分析一下自动创建和手动创建的过程. 2. 自动T

  • Android源码中的目录结构详解

    Android 2.1 |-- Makefile |-- bionic                        (bionic C库) |-- bootable                (启动引导相关代码) |-- build                        (存放系统编译规则及generic等基础开发包配置) |-- cts                        (Android兼容性测试套件标准) |-- dalvik                    

  • MyBatis源码分析之日志记录详解

    一 .概述 MyBatis没有提供日志的实现类,需要接入第三方的日志组件,但第三方日志组件都有各自的Log级别,且各不相同,但MyBatis统一提供了trace.debug.warn.error四个级别: 自动扫描日志实现,并且第三方日志插件加载优先级如下:slf4J → commonsLoging → Log4J2 → Log4J → JdkLog; 日志的使用要优雅的嵌入到主体功能中: 二.设计模式 将各种日志组件如(slf4J ,commonsLoging ,Log4J2 , Log4J

  • Vue源码分析之虚拟DOM详解

    为什么需要虚拟dom? 虚拟DOM就是为了解决浏览器性能问题而被设计出来的.例如,若一次操作中有10次更新DOM的动作,虚拟DOM不会立即操作DOM,而是将这10次更新的diff内容保存到本地一个JS对象中,最终将这个JS对象一次性attch到DOM树上,再进行后续操作,避免大量无谓的计算量.简单来说,可以把Virtual DOM 理解为一个简单的JS对象,并且最少包含标签名( tag).属性(attrs)和子元素对象( children)三个属性. ----- 元素节点: 元素节点更贴近于我们

  • 搭建Tomcat 8源码开发环境的步骤详解

    前言 最近在网上搜索了很多关于tomcat源码环境搭建的文章,发现按照文章的步骤,几乎都启动不了,于是自己尝试搭建,下面是搭建的方法. 基础环境搭建 1.下载tomcat源代码,我这里是通过svn的方式下载的,svn下载地址 2.下载安装maven工具,这里我就不多说了,安装说明太多了,自己网上找. 3.IDE,我这里使用idea 生成maven工程 我的代码本地目录是: /Users/helanzhou/Documents/helanzhou/java/Tomcat/tomcat8/tomca

随机推荐