Docker源码阅读(一) —— Docker源码(Moby)编译运行(无需代理)

文章介绍了Moby项目与Docker的关系,以及如何在遇到网络问题时构建Moby源码。作者提供了修改Dockerfile以适应国内网络的方案,并详细阐述了从克隆源码到打补丁、构建和调试Dockerd的整个过程。

前言

在正式搭建环境之前,先捋一下我们要构建的moby源码是什么。可能大家之前都是知道Docker是开源项目,这里突然蹦出来一个Moby让人有点懵逼,所以还是来和大家一起捋一捋。出于种种因素的考量(主要是利益因素),17年左右Docker开源项目更名为Moby。形成了如下图所示的 Moby -> Docker CE -> Docker EE 的架构,Docker CE就是在moby之上包含了Docker Hub、Docker Compose等等组件。而Docker EE就是在Docker CE之上添加了一些高级功能,如漏洞检测和安全监控等等。因此可以把Moby简单的理解为,开发版的Docker deamon
在这里插入图片描述

构建

弄懂了Moby是个什么东西,接下来就是进行构建了,其实构建的过程中,最大的问题就是网络问题了。很多人可能在连接Github的过程中超超时,至于解决办法,最简单的方式当然是挂代理。当然鉴于这个解决方案其实需要一定的门槛,所以我魔改了一下构建需要的DockerFile文件,加入了国内的镜像,可以直接无需代理安装,我会一步步演示一下这个过程

  1. 首先Clone moby代码到本地
git clone https://github.com/moby/moby.git
  1. 根据官方文档的要求,我们确保主机上没有安装不需要的docker镜像(其实没啥必要),所以可以使用下面的指令删除镜像
docker system prune -a

或者

docker rm $(docker ps -a -q)

其实个人感觉这样做没什么必要,可以先构建一下试试,如果出现了错误再过来运行这一步

  1. 删除所有的虚悬镜像(dangling image)
docker rmi -f $(docker images -q -a -f dangling=true)
  1. 一番操作完毕后,终于可以进入我们的正题了,这里,我们进入源码的文件夹中,开启terminal,执行构建任务
sudo make BIND_DIR=. shell

在这里插入图片描述
如果对自己网络很自信的同学可以执行一下试试。当然,不出意外的话是要出意外了,大概率会报网络错误
在这里插入图片描述

所以这里我们要对文件进行一些修改

  1. 先把下面的patch文件拷贝一下,然后在源码目录下新建一个文件proxy_cn.patch并且把内容拷贝进去
diff --git a/Dockerfile b/Dockerfile
index c5fa44064c..9e0453c2c4 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -170,7 +170,7 @@ FROM base AS tomll
 ARG GOTOML_VERSION=v1.8.1
 RUN --mount=type=cache,ta
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值