说明
20版本的docker,daemon和client是分开了的,分别是moby项目和docker-cli项目。
需要分开调试。
17版本的docker,daemon和client都是moby项目,分支是17。
这里以调试daemon为例。
下载daemon源码
在go的gopath目录下
mkdir src
cd src
mkdir github.com
cd github.com
mkdir docker
cd docker
在gopath目录中的$/src/github.com/docker/
目录中,使用git clone下载源码。下载下来的源码文件名叫moby,不正确,需要将moby重命名为docker。
git clone https://gitee.com/mirrors/moby.git
mv moby/ docker/
使用root用户启动vscode
sudo code --no-sandbox --user-data-dir=.vscode
安装docker daemon依赖的库
btrfs
去deb下载网站搜索btrfs-tools包
https://launchpad.net/ubuntu/+source/btrfs-tools/4.4-1ubuntu1.1
选择对应的,一般的家用电脑amd64
devmapper
去deb下载网站搜索libdevmapper包
搜出来的是lvm2包(这个包就是libdevmapper包)
lvm2可以直接使用apt-get install lvm2安装。
如果还是报错,说没有devmapper.pc,则继续往下。
https://launchpad.net/ubuntu/+source/lvm2/2.03.11-2ubuntu4~ubuntu20.04.1
点击amd64
下载上图的几个deb包。
安装deb包(图中顺序是,从下往上。)
sudo dpkg -i lvm2_2.03.11-2ubuntu4~ubuntu20.04.1_amd64.deb
sudo dpkg -i liblvm2-dev_2.03.11-2ubuntu4~ubuntu20.04.1_amd64.deb
sudo dpkg -i libdevmapper1.02.1_1.02.175-2ubuntu4~ubuntu20.04.1_amd64.deb
sudo dpkg -i libdevmapper-event1.02.1_1.02.175-2ubuntu4~ubuntu20.04.1_amd64.deb
sudo dpkg -i libdevmapper-dev_1.02.175-2ubuntu4~ubuntu20.04.1_amd64.deb
安装过程可能会出现缺少依赖包,则直接apt-get install缺少的包。
如果还是安装不上,则使用命令
apt --fix-broken install
随后就可以快乐的调试docker daemon了
停止原本的docker daemon
systemctl stop docker.service
调试源码
把$gopath/src/github.com/docker/docker/cmd/dockerd目录拖到vscode中。
然后调试。