Docker源码阅读(二) —— Docker源码(Moby)在windows下编译运行

前言

关于Docker源码在Linux环境下的安装,我在这个系列的第一篇文章已经介绍过了,整体下来还算是很简单的。后来我又尝试了一下在windows环境下编译moby,踩了无数的坑,终于编译成功了,真是一部血泪史,网上也没找到有关docker源码在windows上编译的中文资料,应该算是独家了吧。

注意:windows下编译moby,网络环境比较复杂,需要代理开启TUN模式,具体方法,自行搜索

构建环境

  1. 要确保docker运行在windows containers模式下,右键docker图标,然后看到这里是Switch to Linux containers就说明已经处于windows containers了,如果不是的话,就点一下,切换到windows containers中
    在这里插入图片描述

  2. 构建基础镜像
    进入moby的文件夹中,然后

docker pull mcr.microsoft.com/windows/servercore:ltsc2022
docker image tag mcr.microsoft.com/windows/servercore:ltsc2022 microsoft/windowsservercore
docker build -t nativebuildimage -f .\Dockerfile.windows .

这里吐槽一下官方文档,只有一句docker build -t nativebuildimage -f .\Dockerfile.windows .,执行之后绝对会报错,因为这个镜像早就被弃用了
pull access denied for microsoft/windowsservercore, repository does not exist or may require ‘docker login’: denied: requested access to the resource is denied
后来我找到了他的workflow,看了一眼测试的执行的命令,才发现需要这样弄
在这里插入图片描述

构造过程中,如果出现网络错误,说明没有设置真正的全局代理,自行搜索如何设置代理的TUN模式

  1. 编译二进制文件
$DOCKER_GITCOMMIT=(git rev-parse --short HEAD)
docker run --name binaries -e DOCKER_GITCOMMIT=$DOCKER_GITCOMMIT nativebuildimage hack\make.ps1 -Binary
  1. 拷贝生成文件
    下面两行命令会将构建出的docker 以及dockerd拷贝到当前文件夹下
docker cp binaries:C:\gopath\src\github.com\docker\docker\bundles\docker.exe docker.exe
docker cp binaries:C:\gopath\src\github.com\docker\docker\bundles\dockerd.exe dockerd.exe
  1. 执行
Stop-Service Docker
.\dockerd.exe -D

docker daemon启动成功
在这里插入图片描述
这里注意,docker daemon监听在 ./pipe/docker_engine_windows
所以这里我们要这样执行命令:

.\docker -H=npipe:./pipe/docker_engine_windows version

在这里插入图片描述
执行成功~~

然后和之前一样,我们修改一下源码cmd/docerd/docker.go里的shorts
在这里插入图片描述
按照2,3,4,5流程重新执行编译,最终成功,如图所示:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值