分享
  1. 首页
  2. 文章

Docker 非docker环境中编译安装

myonlyzzy · · 2903 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

最近要修改docker的源码做一些开发,但是docker的官网给的编译方式是用docker提供的dockerfile文件编译一个docker 镜像然后在这个容器里面通过脚步编译docker。我们都知道1.11以后的docker实际上有docker dockerd docker-containerd runc 几个进程组成。如何我修改一次就要全部编译一遍多麻烦。所以我觉定自己go build 出docker的几个可执行文件。

1. git clone github.com/moby/moby 现在docker 的代码从docker/docker 迁移到了 /moby/moby。当然你编译之前还需要安装go。这个golang 官网都有按照说明安装就好。

2. 编译docker 就是docker client 。代码在 cmd/docker 下,我这里是1.13.x 分支。在你的gopath 路径下还有一个docker/docker 的目录你要保持 docker下的分支和moby 下的一致。不然在moby 下build 会出错。然后 go build 。会生成docker bin文件。

3.编译 dockerd 编译dockerd 的时候需要安装许多包。可以根据错误提示安装需要的包。例如我是fedora25 。 go build 会报 libdevmapper.h 缺少。然后 dnf install device-mapper-devel.x86_6 。

4. 编译containerd . git clone github.com/docker/containerd . 编译containerd 使用containerd 的make file 来编译生成。 编译完以后会生成 containerd-shim ,containerd。 具体参考 containerd 的README。

5.编译生成runc 。runc是最终启动容器的工具,可以说容器的核心。实际上没有 dockerd 也是发送命令到containerd containerd 再 启动 containd-shim containerd-shim 再调用runc 来启动容器 停止容器等容器运行生命周期的各种操作。其实没有前几个进程,可以直接发送数据给runc 启动容器。当然了要符合oci的标准。具体可以参考runc项目的readme runc 现在在 https://github.com/opencontainers/runc。docker 变曾经的libcontainer贡献出来改了个名字变成cncf下的runc 项目。 runc 编译 就go build 一下。具体看github的 readme 写的非常详细。

现在docker 需要的5个bin文件全部都编译生成完成。 分别是docker dockerd containerd containerd-shim 和runc 。编译这些可执行文件主要是为了方便我调试docker 代码。后面我会修改docker dockerd containerd 等 。从一条docker run 看 数据如何在 这几个进程间流动。如何互相调用。


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:myonlyzzy

查看原文:Docker 非docker环境中编译安装

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
2903 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏