slimtoolkit / slimtoolkit/slim
docker slim fails with "write unix @->/run/docker.sock: write: broken pip"
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 23.4k
- Forks
- 841
- PR merge metrics
- No merged PRs in 30d
Description
I am trying to slim a docker image that runs a simple python script.
Expected Behavior
Sucessfully makes a image that is slimmer or the same size as the image it is working on
Actual Behavior
Errs with
cmd=build info=build.error status='optimized.image.build.error' error='write unix @->/run/docker.sock: write: broken pipe'
cmd=build state=exited code=33554435 version=linux|Transformer|1.37.5|86fbd29ab3549fa564e87e4770178480cb0542d3|2022-03-21_06:10:20AM location=/usr/local/bin
Steps to Reproduce the Problem
I am trying to slim a docker image that runs a simple python script.
A simple reproducible example.
A Dockerfile with
FROM python:3.9-slim
RUN echo "print('Hello World!')" > ./main.py
CMD ["python", "main.py"]
and a bash script (make_slim.sh) to build the image and make sure it runs and slim the image:
sudo docker run $(sudo docker build -q ./)
echo "$(sudo docker build -q ./)"
sudo docker-slim build --target $(sudo docker build -q ./) --http-probe=false --exec "python main.py"
run bash script:
bash make_slim.sh
The full output is:
Hello World!
sha256:7d673146def32d263aa89ece6b351fee67cf7f251c659dd56953ba9b609ab663
docker-slim: message='join the Gitter channel to ask questions or to share your feedback' info='https://gitter.im/docker-slim/community'
docker-slim: message='join the Discord server to ask questions or to share your feedback' info='https://discord.gg/9tDyxYS'
docker-slim: message='Github discussions' info='https://github.com/docker-slim/docker-slim/discussions'
cmd=build info=exec message='changing continue-after from probe to nothing because http-probe is disabled'
cmd=build info=exec message='updating continue-after mode to exec'
cmd=build state=started
cmd=build info=params target.type='image' target='sha256:7d673146def32d263aa89ece6b351fee67cf7f251c659dd56953ba9b609ab663' continue.mode='exec' rt.as.user='true' keep.perms='true' tags=''
cmd=build state=image.inspection.start
cmd=build info=image id='sha256:7d673146def32d263aa89ece6b351fee67cf7f251c659dd56953ba9b609ab663' size.bytes='124714527' size.human='125 MB'
cmd=build info=image.stack index='0' name='python:3.9-slim' id='sha256:5da6ce3c33c6783782eece610be5c83a34001d6cd1d66ea32381afac543f366b'
cmd=build info=image.stack name='' id='sha256:7d673146def32d263aa89ece6b351fee67cf7f251c659dd56953ba9b609ab663' index='1'
cmd=build state=image.inspection.done
cmd=build state=container.inspection.start
cmd=build info=container status='created' name='dockerslimk_4807_20220828154425' id='5fed5015471129f2c55979223e838608272f4f4bc871fb02b5082122f411c520'
cmd=build info=container status='running' name='dockerslimk_4807_20220828154425' id='5fed5015471129f2c55979223e838608272f4f4bc871fb02b5082122f411c520'
cmd=build info=container message='obtained IP address' ip='172.17.0.2'
time="2022-08-28T16:44:26+01:00" level=error msg="channel.Client.Read: read error (read tcp 127.0.0.1:57958->127.0.0.1:49154: read: connection reset by peer), exiting..."
time="2022-08-28T16:44:26+01:00" level=error msg="channel.NewCommandClient: channel verify error = read tcp 127.0.0.1:57958->127.0.0.1:49154: read: connection reset by peer"
cmd=build info=cmd.startmonitor status='sent'
cmd=build info=event.startmonitor.done status='received'
cmd=build info=container name='dockerslimk_4807_20220828154425' id='5fed5015471129f2c55979223e838608272f4f4bc871fb02b5082122f411c520' target.port.list='' target.port.info='' message='YOU CAN USE THESE PORTS TO INTERACT WITH THE CONTAINER'
cmd=build info=continue.after mode='exec' message='provide the expected input to allow the container inspector to continue its execution'
cmd=build info=continue.after shell='python main.py' mode='exec'
docker-slim[build][exec]: output: Hello World!
cmd=build info=continue.after mode='exec' exitcode='0'
cmd=build state=container.inspection.finishing
cmd=build state=container.inspection.artifact.processing
cmd=build state=container.inspection.done
cmd=build state=building message="building optimized image"
cmd=build log='optimized.image.build' event=LOG.START tag='<none>.slim' ====================
cmd=build log='optimized.image.build' event=LOG.END tag='<none>.slim' ====================
cmd=build info=build.error status='optimized.image.build.error' error='write unix @->/run/docker.sock: write: broken pipe'
cmd=build state=exited code=33554435 version=linux|Transformer|1.37.5|86fbd29ab3549fa564e87e4770178480cb0542d3|2022-03-21_06:10:20AM location=/usr/local/bin
cmd=build info=container.inspector.cleanup name='dockerslimk_4807_20220828154425' id='5fed5015471129f2c55979223e838608272f4f4bc871fb02b5082122f411c520'
cmd=build state=container.target.shutdown.start
cmd=build info=container.inspector message='already finished monitoring'
cmd=build state=container.target.shutdown.done
cmd=build info=report file='slim.report.json'
docker-slim: message='join the Gitter channel to ask questions or to share your feedback' info='https://gitter.im/docker-slim/community'
docker-slim: message='join the Discord server to ask questions or to share your feedback' info='https://discord.gg/9tDyxYS'
docker-slim: message='Github discussions' info='https://github.com/docker-slim/docker-slim/discussions'
From the log, it seems that the --http-probe=false and --exec are working correctly, and the python script runs fine. So I'm confused what could be causing such a simple example to fail.
Specifications
OS:
- Version: 22.04.1 LTS
- Platform: Ubuntu
Docker:
- Version: Docker version 20.10.17, build 100c701
Docker-slim:
- Version: docker-slim version linux|Transformer|1.37.5|86fbd29ab3549fa564e87e4770178480cb0542d3|2022-03-21_06:10:20AM
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the failure with the provided Dockerfile and make_slim.sh, using Docker 20.10.17 and docker-slim 1.37.5. Start with the optimized image build step and the reported Docker socket errors; done means the example completes successfully and produces a slim image without the broken-pipe failure.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker, python
- Domain
- devops, infrastructure
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100