check context builder endpoint by crazy-max · Pull Request #1129 · docker/buildx (original) (raw)
while making some tests with @tonistiigi about an issue with rm --all-inactive
that doesn't effectively remove some inactive nodes we saw that there is an underlying issue with docker context being detected as a docker-container builder:
$ docker context create --docker host=ssh://mini remote-buildkit
remote-buildkit
$ docker context ls
NAME TYPE DESCRIPTION DOCKER ENDPOINT KUBERNETES ENDPOINT ORCHESTRATOR
default * moby Current DOCKER_HOST based configuration unix:///var/run/docker.sock swarm
desktop-linux moby npipe:////./pipe/dockerDesktopLinuxEngine
desktop-windows moby npipe:////./pipe/dockerDesktopWindowsEngine
remote-buildkit moby ssh://mini
$ docker buildx ls
NAME/NODE DRIVER/ENDPOINT STATUS BUILDKIT PLATFORMS
builder docker-container
builder0 unix:///var/run/docker.sock running 394ccf8 linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
mac-mini-m1 tcp://mac-mini-m1.home.foobar.com:2376 running 394ccf8 linux/arm64*, linux/amd64, linux/amd64/v2, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
sifive tcp://sifive.home.foobar.com:2375 running 394ccf8 linux/riscv64*
builder2 * docker-container
builder20 unix:///var/run/docker.sock running 394ccf8 linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
fervent_raman docker-container
fervent_raman0 unix:///var/run/docker.sock running v0.10.3 linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
desktop-linux protocol not available
desktop-windows protocol not available
remote-buildkit docker-container
remote-buildkit remote-buildkit error during connect: Get "http://docker.example.com/v1.24/info": command [ssh -- mini docker system dial-stdio] has exited with exit status 255, please make sure the URL is valid, and Docker 18.09 or later is installed on the remote host: stderr=ssh: Could not resolve hostname mini: Name or service not known
default docker
default default running 20.10.14 linux/amd64, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6
here remote-buildkit
should not be a docker-container builder. that's because we don't check this endpoint while initializing the docker client so it assumes the underlying node is a docker-container when returned from:
this PR adds a basic Ping
check when docker client is initialized so we can find out early that this builder is faulty:
$ docker buildx ls
NAME/NODE DRIVER/ENDPOINT STATUS BUILDKIT PLATFORMS
builder docker-container
builder0 unix:///var/run/docker.sock running 394ccf8 linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
mac-mini-m1 tcp://mac-mini-m1.home.foobar.com:2376 running 394ccf8 linux/arm64*, linux/amd64, linux/amd64/v2, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
sifive tcp://sifive.home.foobar.com:2375 running 394ccf8 linux/riscv64*
builder2 * docker-container
builder20 unix:///var/run/docker.sock running 394ccf8 linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
fervent_raman docker-container
fervent_raman0 unix:///var/run/docker.sock running v0.10.3 linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
desktop-linux protocol not available
desktop-windows protocol not available
remote-buildkit error during connect: Get "http://docker.example.com/_ping": command [ssh -- mini docker system dial-stdio] has exited with exit status 255, please make sure the URL is valid, and Docker 18.09 or later is installed on the remote host: stderr=ssh: Could not resolve hostname mini: Name or service not known
default docker
default default running 20.10.14 linux/amd64, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6