搭建docke的调试环境
在搭建docker的调试环境时,踩了些坑,这里总结了一个比较顺利的方式,供大家参考。共分为两个部分,分别为:docker-cli的调式环境和 moby(docker-server)的调试环境。
我使用的是VMware16.2.4安装得centos7.9.2009的操作系统,编译器用的VScode,go的版本为1.18, docker-cli的版本为1.20.10。
这里安装go开发环境使用的是g 版本管理工具,具体的安装过程请参考:https://github.com/voidint/g 。
安装完之后,切换为1.18 版本。
关闭了go mod ,因为docker-cli项目,没有使用go mod管理
修改GO_PROXY为七牛云的
GOPATH 保持默认的不变,如果要修改也可以,之后后面创建目录的时候,也要一并修改。
go env -w GO111MODULE="off"
go env -w GOPROXY="https://goproxy.cn,direct"

在GOPATH创建如下的目录:

mkdir -p /root/go/src/github.com/docker # 如果GOPATH有修改,此处路径也要做相应修改
在GOPATH中下载代码,并切换至目标分支
cd /root/go/src/github.com/docker
git clone https://github.com/docker/cli.git
cd cli
git checkout -b origin/20.10 remotes/origin/20.10

通过 SSH remote 插件打开代码以后(相信如果你能查到这个文档,自然会使用该插件)


其中 program字段,设置为docker.go 文件的路径。
args字段,可以执行调整为自己感兴趣的docker命令,不必含有docker,直接填写根命令就行。

{
"version": "0.2.0",
"configurations": [
{
"name": "Launch Package",
"type": "go",
"request": "launch",
"mode": "debug",
"program": "/root/go/src/github.com/docker/cli/cmd/docker/docker.go",
"env": {},
"args": ["ps","-a"]
}
]
}
点击开始调试

如果出现如下的信息,则说明成功了。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GaBJiINO-1668090505560)(新建 Markdown.assets/image-20221110222440998.png)]](https://1000bd.com/contentImg/2024/04/25/a1b989a080b1a717.png)
moby与docker的关系就不用说了。基于docker-cli的调试环境,可以很容易的搭建moby的调试环境。
yum install device-mapper-devel
yum install btrfs-progs.x86_64 btrfs-progs-devel.x86_64 libblockdev-btrfs.x86_64 libblockdev-btrfs-devel.x86_64 -y
cd /root/go/src/github.com/docker
git clone https://github.com/moby/moby
mv moby docker

systemctl stop docker
launch.json内容修改为如下: 主要是program改为入口路径
"version": "0.2.0",
"configurations": [
{
"name": "Launch Package",
"type": "go",
"request": "launch",
"mode": "debug",
"program": "/root/go/src/github.com/docker/docker/cmd/dockerd/",
"env": {},
"args": []
}
]