前言
在正式搭建环境之前,先捋一下我们要构建的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文件,加入了国内的镜像,可以直接无需代理安装,我会一步步演示一下这个过程
- 首先Clone moby代码到本地
git clone https://github.com/moby/moby.git
- 根据官方文档的要求,我们确保主机上没有安装不需要的docker镜像(其实没啥必要),所以可以使用下面的指令删除镜像
docker system prune -a
或者
docker rm $(docker ps -a -q)
其实个人感觉这样做没什么必要,可以先构建一下试试,如果出现了错误再过来运行这一步
- 删除所有的虚悬镜像(dangling image)
docker rmi -f $(docker images -q -a -f dangling=true)
- 一番操作完毕后,终于可以进入我们的正题了,这里,我们进入源码的文件夹中,开启terminal,执行构建任务
sudo make BIND_DIR=. shell

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

所以这里我们要对文件进行一些修改
- 先把下面的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

文章介绍了Moby项目与Docker的关系,以及如何在遇到网络问题时构建Moby源码。作者提供了修改Dockerfile以适应国内网络的方案,并详细阐述了从克隆源码到打补丁、构建和调试Dockerd的整个过程。
 —— Docker源码(Moby)编译运行(无需代理)&spm=1001.2101.3001.5002&articleId=131032138&d=1&t=3&u=6257a1bbf48041a78f04d350784c60b7)
1374

被折叠的 条评论
为什么被折叠?



