-
Notifications
You must be signed in to change notification settings - Fork 18.9k
Description
relates to #39983
relates to docker-archive/docker-ce#660 (comment)
relates to docker/cli#2809
Looks like the report we received about the daemon producing an error about the experimental --stream option no longer being supported is not fixed yet (the fix in the CLI docker/cli#2809 is not sufficient, as older CLI's will fail)
I accidentally discovered how to reproduce:
Daemon (built from v20.10.0-beta1 tag) started without --experimental:
docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock docker:18.09 sh
echo "FROM scratch" | docker build -
Sending build context to Docker daemon 2.048kB
Step 1/1 : FROM scratch
--->
No image was generated. Is your Dockerfile empty?Daemon:
DEBU[2020-11-06T17:10:57.689685060Z] Calling POST /v1.39/build?buildargs={}&cachefrom=[]&cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=Dockerfile&labels={}&memory=0&memswap=0&networkmode=default&pull=1&q=1&rm=1&shmsize=0&target=&ulimits=null&version=1
Daemon, started with --experimental
docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock docker:18.09 sh
echo "FROM scratch" | docker build -
Sending build context to Docker daemon 2.048kB
Error response from daemon: experimental session with v1 builder is no longer supported, use builder version v2 (BuildKit) insteadDaemon:
DEBU[2020-11-06T17:06:11.433017409Z] Calling POST /v1.39/build?buildargs={}&cachefrom=[]&cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=Dockerfile&labels={}&memory=0&memswap=0&networkmode=default&pull=1&q=1&rm=1&session=btn05f8k6kkk2110fs3djyork&shmsize=0&target=&ulimits=null&version=1
DEBU[2020-11-06T17:06:11.434237792Z] Calling POST /session
INFO[2020-11-06T17:06:11.434395940Z] parsed scheme: "" module=grpc
INFO[2020-11-06T17:06:11.434453021Z] scheme "" not registered, fallback to default scheme module=grpc
INFO[2020-11-06T17:06:11.434470626Z] ccResolverWrapper: sending update to cc: {[{ <nil> 0 <nil>}] <nil> <nil>} module=grpc
INFO[2020-11-06T17:06:11.434477816Z] ClientConn switching balancer to "pick_first" module=grpc
DEBU[2020-11-06T17:06:11.486615969Z] FIXME: Got an API for which error does not match any expected type!!!: experimental session with v1 builder is no longer supported, use builder version v2 (BuildKit) instead
(removed stack dump)
ERRO[2020-11-06T17:06:11.486694465Z] Handler for POST /v1.39/build returned error: experimental session with v1 builder is no longer supported, use builder version v2 (BuildKit) instead
DEBU[2020-11-06T17:06:11.486818111Z] FIXME: Got an API for which error does not match any expected type!!!: experimental session with v1 builder is no longer supported, use builder version v2 (BuildKit) instead
(removed stack dump)
WARN[2020-11-06T17:06:11.489208009Z] grpc: addrConn.createTransport failed to connect to { <nil> 0 <nil>}. Err :connection error: desc = "transport: Error while dialing only one connection allowed". Reconnecting... module=grpc
session=btn05f8k6kkk2110fs3djyork, even without it having the --stream option set, so for some reason, it looks for the daemon to be experimental, and in that case, sends a session-id
Trying with explicit --stream:
echo "FROM scratch" | docker build --stream -
failed to open Dockerfile: open Dockerfile: no such file or directory
echo "FROM scratch" | docker build --stream=true -
failed to open Dockerfile: open Dockerfile: no such file or directoryThat looks like another bug, but working around that by using a Dockerfile instead of stdin;
echo "FROM scratch" > Dockerfile
docker build --stream .
Error response from daemon: experimental session with v1 builder is no longer supported, use builder version v2 (BuildKit) instead# without --stream
Calling POST /v1.39/build?buildargs={}&cachefrom=[]&cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=Dockerfile&labels={}&memory=0&memswap=0&networkmode=default&pull=1&q=1&rm=1&session=btn05f8k6kkk2110fs3djyork&shmsize=0&target=&ulimits=null&version=1
# With --stream
Calling POST /v1.39/build?buildargs={}&cachefrom=[]&cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=Dockerfile&labels={}&memory=0&memswap=0&networkmode=default&remote=client-session&rm=1&session=361whphfmy9h8g4u5kd2zjayi&shmsize=0&target=&ulimits=null&version=1--stream, the remote=client-session is set: perhaps set should produce an error for that parameter instead?