cross-toolchains icon indicating copy to clipboard operation
cross-toolchains copied to clipboard

Unable to build docker image: invalid flag is passed to docker

Open TudbuT opened this issue 2 years ago • 4 comments

Shell output:

$ sudo cargo build-docker-image x86_64-pc-windows-msvc-cross --tag local
    Finished dev [unoptimized + debuginfo] target(s) in 0.07s
     Running `target/debug/xtask build-docker-image x86_64-pc-windows-msvc-cross --tag local`
[cross] note: Build x86_64-pc-windows-msvc-cross for x86_64-unknown-linux-gnu
unknown flag: --platform
See 'docker --help'.

Usage:  docker [OPTIONS] COMMAND

[Docker help page follows]

Docker version (most recent stable at the time of making this issue):

Client:
 Version:           20.10.19
 API version:       1.41
 Go version:        go1.19.2
 Git commit:        d85ef84533
 Built:             Sat Oct 15 20:20:02 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Rust version (most recent stable at the time of making this issue):

stable-x86_64-unknown-linux-gnu (default) @ rustc 1.64.0 (a55dd71d5 2022-09-19)

Error: 0: docker buildx build --platform linux/amd64 --build-arg 'CROSS_TARGET_TRIPLE=X86_64_PC_WINDOWS_MSVC_CROSS' --load --pull --cache-from 'type=registry,ref=ghcr.io/cross-rs/x86_64-pc-windows-msvc-cross:main' --tag ghcr.io/cross-rs/x86_64-pc-windows-msvc-cross:local --label 'org.cross-rs.for-cross-target=x86_64-pc-windows-msvc-cross' --label 'org.cross-rs.runs-with=x86_64-unknown-linux-gnu' -f /run/media/tudbut/a5187034-7bde-48cd-b51f-9957d531c89a/cross/docker/cross-toolchains/docker/Dockerfile.x86_64-pc-windows-msvc-cross --progress auto . failed with exit status: 125

TudbuT avatar Oct 18 '22 10:10 TudbuT

Can you check the output of docker buildx? With container engines, the flags have higher priority than the subcommands, so something like docker x --platform will produce an error unknown flag: --platform when the subcommand x doesn't exist. In this case, if BuildKit isn't present and therefore no buildx, the error with the platform flag is the first to show up.

If BuildKit is not available, we provide an environment variable CROSS_CONTAINER_ENGINE_NO_BUILDKIT to avoid using buildx build, only build, when building Docker images. In this case:

$ CROSS_CONTAINER_ENGINE_NO_BUILDKIT=1 sudo cargo build-docker-image x86_64-pc-windows-msvc-cross --tag local

Alexhuszagh avatar Oct 18 '22 14:10 Alexhuszagh

another solution is vim ~/.docker/config.json, add a line { "experimental": "enabled", ... }, and run a command as docker buildx install

gongzhengyang avatar Jun 14 '23 07:06 gongzhengyang

Oh, sorry. I forgot about this issue. Will provide log output shortly.

TudbuT avatar Jun 14 '23 11:06 TudbuT

I had this same issue and solved it by installing docker from the official source. Ubuntu packages docker without BuildKit (buildx).

BenjaminSchaaf avatar Oct 06 '23 13:10 BenjaminSchaaf