You are getting the EOF because the Docker API is expecting the contents of the Dockerfile passed to the Docker engine API.
You are not showing the command or code you are using to build your image so I can’t “see” what you are doing.
You have to pass the Dockerfile as part of the “payload” to the Docker API.
Example using curl
Note: I have my Docker daemon listening on tcp://127.0.0.1:5000
so I could curl the API locally.
In my docker.service file I have:
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://127.0.0.1:5000
My Dockerfile
🐳 gforghetti@172.28.128.3:[~] $ cat Dockerfile
FROM alpine:latest
CMD echo 'Hello World!'
Create a binary archive for the Dockerfile
🐳 gforghetti@172.28.128.3:[~] $ tar zcvf dockerfile.tar.gz Dockerfile
Dockerfile
Call the Docker API to build the image
🐳 gforghetti@172.28.128.3:[~] $ curl -v -H 'Content-Type:application/tar' --data-binary '@dockerfile.tar.gz' http://127.0.0.1:5000/build?t=gforghetti/my_app:1.0.0
* Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to 127.0.0.1 (127.0.0.1) port 5000 (#0)
> POST /build?t=gforghetti/my_app:1.0.0 HTTP/1.1
> Host: 127.0.0.1:5000
> User-Agent: curl/7.58.0
> Accept: */*
> Content-Type:application/tar
> Content-Length: 172
>
* upload completely sent off: 172 out of 172 bytes
< HTTP/1.1 200 OK
< Api-Version: 1.39
< Content-Type: application/json
< Docker-Experimental: false
< Ostype: linux
< Server: Docker/18.09.1 (linux)
< Date: Tue, 05 Feb 2019 20:46:12 GMT
< Transfer-Encoding: chunked
<
{"stream":"Step 1/2 : FROM alpine:latest"}
{"stream":"\n"}
{"status":"Pulling from library/alpine","id":"latest"}
{"status":"Pulling fs layer","progressDetail":{},"id":"6c40cc604d8e"}
{"status":"Downloading","progressDetail":{"current":27877,"total":2754728},"progress":"[\u003e ] 27.88kB/2.755MB","id":"6c40cc604d8e"}
{"status":"Downloading","progressDetail":{"current":1624825,"total":2754728},"progress":"[=============================\u003e ] 1.625MB/2.755MB","id":"6c40cc604d8e"}
{"status":"Verifying Checksum","progressDetail":{},"id":"6c40cc604d8e"}
{"status":"Download complete","progressDetail":{},"id":"6c40cc604d8e"}
{"status":"Extracting","progressDetail":{"current":32768,"total":2754728},"progress":"[\u003e ] 32.77kB/2.755MB","id":"6c40cc604d8e"}
{"status":"Extracting","progressDetail":{"current":1474560,"total":2754728},"progress":"[==========================\u003e ] 1.475MB/2.755MB","id":"6c40cc604d8e"}
{"status":"Extracting","progressDetail":{"current":2754728,"total":2754728},"progress":"[==================================================\u003e] 2.755MB/2.755MB","id":"6c40cc604d8e"}
{"status":"Pull complete","progressDetail":{},"id":"6c40cc604d8e"}
{"status":"Digest: sha256:b3dbf31b77fd99d9c08f780ce6f5282aba076d70a513a8be859d8d3a4d0c92b8"}
{"status":"Status: Downloaded newer image for alpine:latest"}
{"stream":" ---\u003e caf27325b298\n"}
{"stream":"Step 2/2 : CMD echo 'Hello World!'"}
{"stream":"\n"}
{"stream":" ---\u003e Running in 8344e3468637\n"}
{"stream":"Removing intermediate container 8344e3468637\n"}
{"stream":" ---\u003e 46a0a9f9e4c4\n"}
{"aux":{"ID":"sha256:46a0a9f9e4c47f08bc52b80e0119a1ce1e96e980d1137e54110501fc7743137c"}}
{"stream":"Successfully built 46a0a9f9e4c4\n"}
{"stream":"Successfully tagged gforghetti/my_app:1.0.0\n"}
* Connection #0 to host 127.0.0.1 left intact
Display the images
🐳 gforghetti@172.28.128.3:[~] $ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
gforghetti/my_app 1.0.0 e9155cb5cac7 5 seconds ago 5.53MB
alpine latest caf27325b298 5 days ago 5.53MB