文章_Linux运维_在非docker环境中编译安装docker
最近要修改 docker 的源码做一些开发。
但是 docker 的官网给的编译方式是用 docker 提供的 dockerfile 文件构建一个 docker 容器然后在这个容器里面通过脚本编译 docker。
我们都知道 1.11 以后的 docker 实际上有 docker, dockerd, docker-containerd, runc 几个进程组成。
如果我修改一次就要全部编译一遍多麻烦。所以我觉定自己 go build 出 docker 的几个可执行文件。
1. 编译前准备
现在 docker 的代码从 github.com/docker/docker 迁移到了 github.com/moby/moby。
git clone github.com/moby/moby
当然在编译之前还需要安装 go。这个 Golang 官网都有说明, 按照说明安装就好。
2. 编译 docker
编译 docker 就是编译 docker client。
这里以 1.13.x 分支为例, 代码在 cmd/docker 下。
在你的 GOPATH 路径下还有一个 docker/docker 的目录你要保持 docker 下的分支和 moby 下的一致。不然在 moby 下 build 会出错。
然后执行 go build。会生成 docker 的 bin 文件。
3. 编译 dockerd
编译 dockerd 的时候需要安装许多包。
可以根据错误提示安装需要的包。</