有人知道是否有从源代码构建并用Mac替换docker二进制文件的指南吗?
自述文件没有说,所以我尝试了一些目标,但得到了https://github.com/docker/for-mac/issues/3353
已编辑 确切地说,我想做的是调试docker cli,以查看Auth为何不适用于我以前的公司中的单个开发人员,而不管所有因素都经过检查和验证是否正确。
答案 0 :(得分:0)
要执行此操作,请签出docker cli的回购协议(起初混淆了docker的哪个部分位于何处)。但cli位于:
git@github.com:docker/cli.git
构建它(所有平台的构建版本),假设您已经拥有make
:
make -f docker.Makefile binary cross
然后使用此二进制文件(对于Mac),例如:
build/docker-darwin-amd64 pull mysql
或备份并用上述二进制文件替换原始的/usr/local/bin/docker
。
答案 1 :(得分:0)
由于在macOS上您将不运行引擎,因此可以尝试其他方法。使用Makefile构建docker
客户端需要docker引擎和docker客户端,而您可能没有。
我正在从docker / cli存储库中构建docker
(客户端)作为一个普通的Go项目:
克隆存储库:
$ git clone https://github.com/docker/cli.git
构建master
,或签出特定标签:
$ git checkout v19.03.6
cd
进入存储库,创建构建目录,并创建require Go项目结构:
$ cd cli
$ mkdir -p build/src/github.com/
$ cd build/src/github.com/
$ ln -s ../../.. cli
cd
进入build
目录并设置GOPATH
:
$ cd ../..
$ export GOPATH=$(pwd)
构建docker
客户端:
$ go build github.com/docker/cli/cmd/docker
从build
目录复制二进制文件,例如:
$ cp docker /usr/local/bin
您会注意到未设置一些与构建相关的信息:
./docker version
Client:
Version: unknown-version
API version: 1.40
Go version: go1.13.8
Git commit: unknown-commit
Built: unknown-buildtime
OS/Arch: darwin/amd64
Experimental: false
您可以传递合适的-ldflags
参数以将这些变量设置为:
$ go build \
-ldflags \
"-X github.com/docker/cli/cli/version.GitCommit=${docker_gitcommit} \
-X github.com/docker/cli/cli/version.Version=${version} \
-X \"github.com/docker/cli/cli/version.BuildTime=${build_time}\""
前提是您已设置docker_gitcommit
,version
和build_time
变量。如果build_time
包含空格(如上游docker
二进制文件一样),则必须在第三个标志中使用转义引号。
希望这会有所帮助。