docker源码编译 linux_DOCKER源码编译

本文介绍了如何在Linux环境下,通过Docker容器编译Docker源码。首先,拉取特定版本的docker-dev镜像,然后创建目录存放编译结果。接着,在容器内运行编译命令生成Docker程序。最后,验证编译完成的Docker版本和API版本。
摘要由CSDN通过智能技术生成

官方建议docker源码编译在docker容器内进行,因为官方提供的容器内已经继承了编译需要的环境,如果非要自己搭建编译环境也不是不可以,就是稍微有些繁琐。以下以1.8.2版本为例。

1.pull docker-dev:1.8.2的镜像docker pull docker-dev:版本

具体版本可以查看官网。

ps:该镜像较大,可以考虑从国内镜像下载。

2.创建目录存放docker编译后生成的文件夹[root@myserv home]# mkdir -p /home/dockerbuild/bundles[root@myserv home]# cd /home/dockerbuild/

3.运行pull得到的docker-dev镜像,然后在容器里进行docker的编译工作[root@myserv 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

root@87193e358c88:/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.查看编译输出并验证编译结果root@87193e358c88:/go/src/github.com/docker/docker# ls -l bundles/1.8.2/binary/total 21104lrwxrwxrwx 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。[root@myserv dockerbuild]# cd bundles/[root@myserv bundles]# ls1.8.2  latest

[root@myserv bundles]# cd 1.8.2/[root@myserv 1.8.2]# lsbinary

[root@myserv binary]# ls -ltotal 21104lrwxrwxrwx 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

[root@myserv binary]# ./docker versionClient:

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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值