1 源码下载编译
- 1.1 源码下载
仓库地址:https://github.com/docker/cli.git
关于下载速度慢的解决办法,我所用的一般有两个,- 把仓库导入到gitee上去,一般有名的仓库已经有了,直接搜索就行
- 下载 dev-sidecar进行加速,https://github.com/docmirror/dev-sidecar.git, 注意目前有坑,即开启插件后,不用了需要手动关闭,直接关机的话会导致下次开机 需要修复一下网络
- 1.2 源码编译
下载完代码后,安装readme执行docker buildx bake
的话,可能会遇到几个问题- 编译机器需要安装docker,且版本要大于 19.03,而比较坑的是,目前直接用yum安装的版本 基本上都是低于这个版本的,所以一般需要手动安装,自己去搜索下 docker的二进制安装方法
- docker: ‘buildx’ is not a docker command, 可能也会遇到这个问题,一般来说就是docker版本问题,如果版本达到了,还是不行的话,可以手动安装下 buildx,详情自行google
- docker buildx bake 执行成功了,build目录下会生成 docker二进制,可以正常执行,但是用 dlv或者gdb的时候,却没有调试信息,比如用dlv 无法在goland上 go remote远程调试,这是因为,默认把调试信息去掉了,根据
go help build
,我们可以得知可以设置编译参数-ldflags "-w -s"
。其中-w
为去掉调试信息(无法使用gdb调试),-s
为去掉符号表。所以只需要找到在哪里设置了就行,然后去掉。通过一番搜索发现是在scripts/build/.variables文件里设置的,去掉-w后重新编译就好了,现在可以愉快的进行调试了
2 源码分析
以docker images为例