博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最新版 源码编译 docker
阅读量:6700 次
发布时间:2019-06-25

本文共 2704 字,大约阅读时间需要 9 分钟。

前言:

最近想研究 docker 源码,那么要研究源码第一步就是学会通过源码编译。然后在网上查找了很多,都是比较老的版本。目前官最新的版本是 18.09。经过一番探索之后,终于成功编译了

下面我把我的探索过程记录下来

第一步:

已知docker是go语言开发的, 所以在最新版的 docker 查看对应的版本

如果没有安装 docker 的话,先按照文中的版本操作吧。我是根据 apt-get 安装的 docker 来探索编译 docker 的方法的

root@n3:~# docker versionClient: Version:           18.09.3 API version:       1.39 Go version:        go1.10.8 Git commit:        774a1f4 Built:             Thu Feb 28 06:53:11 2019 OS/Arch:           linux/amd64 Experimental:      falseServer: Engine:  Version:          18.09.3  API version:      1.39 (minimum version 1.12)  Go version:       go1.10.8  Git commit:       774a1f4  Built:            Wed Mar 27 09:56:24 2019  OS/Arch:          linux/amd64  Experimental:     false 

 

第二步:

安装 go 1.10.8 版本

配置 GOROOT 和 GOPATH (过程自行解决)

 

第三步:

从github上下载源码 https://github.com/docker/engine/releases,找到任意版本下载到本地

解压后重命名为 docker

将 docker 目录移动到 $GOPATH/src/github.com/docker/ 目录下

 

构建前要确认已经安装了编译库:apt-get install gcc pkg-config btrfs-tools

开始构建:

进入到 $GOPATH/src/github.com/docker/docker 目录下

执行命令 VERSION=testbuild DOCKER_GITCOMMIT=1 ./hack/make.sh binary 完成

ps: 可以选择指定存储引擎。只需要在命令前面加上这句,DOCKER_GRAPHDRIVER=overlay2

其中 VERSION 是构建后的 docker版本,比如上面的 18.09.3

构建完成后进入目录:$GOPATH/src/github.com/docker/docker/bundles/binary-daemon

目录下的 dcoker-dev 就是 docker-daemon,使用 ls -l 命令看到这里已经创建了软连接 docker-dev -> dockerd

 

---

安装 containerd

---

 

到这里就是启动的问题:

为了了使用方便,我直接替换当前系统的docker启动文件,替换前,先使用 systemctl stop docker 停止docker引擎。然后替换方式如下

step1:

查看 docker 服务文件位置, systemctl cat docker.service (前提是已经通过 apt-get install 安装过了 docker)

在输出的第一行中,提示有服务文件位置,我的是 /lib/systemd/system/docker.service

step2:

打开文件,找到行 ExecStart= /usr/bin/dockerd xxxx....

替换命令行中的 /usr/bin/dockerd 服务文件,这个文件是通过 apt-get install 安装的 docker engine

替换成 $GOPATH/src/github.com/docker/docker/bundles/binary-daemon/dockerd

注意:$GOPATH替换成绝对路径。如果不知道,使用 echo $GOPATH 就能看到了

step3:

替换后使用 systemctl daemon-reload  命令重载

step4:

执行命令, systemctl start docker 启动引擎

验证:

执行 docker version

root@n3:~# docker versionClient: Version:           18.09.3 API version:       1.39 Go version:        go1.10.8 Git commit:        774a1f4 Built:             Thu Feb 28 06:53:11 2019 OS/Arch:           linux/amd64 Experimental:      falseServer: Engine:  Version:          testbuild  API version:      1.39 (minimum version 1.12)  Go version:       go1.10.8  Git commit:       1  Built:            Wed Mar 27 10:52:22 2019  OS/Arch:          linux/amd64  Experimental:     false

 可以看到引擎版本已经是 testbuild了

这里还要说明一下的,这个只是构建了 docker 引擎,docker client 的话需要另外构建。client 也就是我们通常使用的 docker 命令工具,比如 docker pull xxx , docker images xxx 等等

遇到问题:

1.  ln -sf . ...错误

由于我的目录是从 windows 挂载到 ubuntu上的。不能执行软连接,所以将文件拷贝到 ubuntu 主机上再进行构建

 

如果还有不清楚的。欢迎留言:

 

转载于:https://www.cnblogs.com/newguy/p/10609765.html

你可能感兴趣的文章
bzoj 1084 DP
查看>>
wordpress教程:默认http头信息X-Pingback的隐藏与修改
查看>>
排序_3
查看>>
Python中的join()函数的用法
查看>>
2、Sprite,SpriteBatch,Texture,TextureRegion的初步认识
查看>>
LeetCode 7. Reverse Integer
查看>>
STM32Flash读写
查看>>
POJ——字符串插入
查看>>
git 常用命令笔记
查看>>
CodeVS 1044 拦截导弹(DP)
查看>>
WebSSH2安装过程可实现WEB可视化管理SSH工具
查看>>
GoldenGate—AUTORESTART配置
查看>>
7.15模拟赛
查看>>
【转】[教程] CSS入门3:如何插入CSS样式
查看>>
5shift shell
查看>>
ubuntu14.04配置caffe
查看>>
Quartz 2D编程笔记
查看>>
bzoj2561 最小生成树
查看>>
java MD5加密
查看>>
我的Android进阶之旅------>Android利用温度传感器实现带动画效果的电子温度计
查看>>