docker源码编译 linux_docker源码编译安装步骤解析

step 3:

执行make binary,这会调用Makefile中的binary分支代码:

binary: build ## build the linux binaries

$(DOCKER_RUN_DOCKER) hack/make.sh binary

这一步是在上一步创建的image中创建容器并在容器中运行hack/make.sh

在hack/make.sh 中会调用/hack/make/binary,

在hack/make/binary中会调用/hack/make/binary-client 和binary-daemon,这两个脚本会分别调用同目录下的.binary文件,这个.binary是一个隐藏文件。在.binary文件中会执行go build 语句实现源码的最终的编译:

go build \

-o "$DEST/$BINARY_FULLNAME" \

"${BUILDFLAGS[@]}" \

-ldflags "

$LDFLAGS

$LDFLAGS_STATIC_DOCKER

" \

$GO_PACKAGE

我们可以追踪GO_PACKAGE,发现它就是docker/cmd/dockerd/docker.go两个文件,也就是docker源码的入口文件。要继续搞清楚源码都做了些什么就要从这两个文件入手一步步查看。

make binary需要较长的时间,在完成之后你就可以在bundles目录下看到两个目录,进去binary-daemon,可以看到很多文件,将以docker开头的ELF文件copy至/usr/bin下(之前先要移除原先的docker binary),注意dockerd-dev要改成dockerd,重启docker(可以用systemctl)运行docker version,你就会发现你的dockerd已经升级到最新了,但是你的docker还是老样子。接下来编译docker client。其实版本不一致一般不影响使用。

其实不执行上一部直接make binary也是可以成功编译的,这里重在介绍过程。

step4:编译docker client

进入源码目录运行:

# make -f docker.Makefile

完成之后在build目录下会生成docker binary,注意不要把docker的链接当成docker,将其替换原有的docker binary,替换是注意名字要和原先保持一致,名字为docker

重启docker,再运行docker version,你会发现都已经升级到最新了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值