DOCKER源码编译

简介:

官方建议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)


      本文转自zsdnr  51CTO博客,原文链接:http://blog.51cto.com/12942149/1929368,如需转载请自行联系原作者



目录
打赏
0
0
0
0
348
分享
相关文章
极简,利用Docker仅两行命令就能下载和编译OpenJDK11
下载OpenJDK11源码再编译它,很麻烦吗?借助docker,这些操作会变得异常简单
1050 0
极简,利用Docker仅两行命令就能下载和编译OpenJDK11
干货含源码!如何用Java后端操作Docker(命令行篇)
只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Docker镜像-基于DockerFile制作编译版nginx镜像
这篇文章介绍了如何基于Dockerfile制作一个编译版的nginx镜像,并提供了详细的步骤和命令。
770 17
Docker镜像-基于DockerFile制作编译版nginx镜像
docker中编译android aosp源码,出现Build sandboxing disabled due to nsjail error
在使用Docker编译Android AOSP源码时,如果遇到"Build sandboxing disabled due to nsjail error"的错误,可以通过在docker run命令中添加`--privileged`参数来解决权限不足的问题。
1407 1
阿里云云效产品使用问题之流水线编译docker时,如何把已经定义好的token传入编译参数
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
阿里云云效产品使用问题之流水线编译docker时,如何把已经定义好的token传入编译参数
Jenkins Pipeline 流水线 - 上传文件 Publish over SSH + Docker 编译 + 上传到阿里仓库
Jenkins Pipeline 流水线 - 上传文件 Publish over SSH + Docker 编译 + 上传到阿里仓库
207 0
arm 64 环境利用 docker 编译 datax 工具
arm 64 环境利用 docker 编译 datax 工具
349 0
Docker系列(1)安装Linux系统编译Android源码
Docker系列(1)安装Linux系统编译Android源码
206 0
docker编译部署freeswitch-1.10.10
docker编译部署freeswitch-1.10.10
937 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等