You're on your way to the next level! Join the Kudos program to earn points and save your progress.
Level 1: Seed
25 / 150 points
Next: Root
1 badge earned
Challenges come and go, but your rewards stay with you. Do more to earn more!
What goes around comes around! Share the love by gifting kudos to your peers.
Keep earning points to reach the top of the leaderboard. It resets every quarter so you always have a chance!
Join now to unlock these features and more
The Atlassian Community can help you and your team get more value out of Atlassian products and practices.
I want to run a docker container in a Bitbucket pipeline. To be more explicit: I want to run a python script which builds a docker image using os.system commands. But I cannot execute any commands as it claims the docker daemon is not running. However, I did not find any way to start it.
Here are the commands I run in that python script and their output:
INFO Running command 'which docker' in '/opt/atlassian/pipelines/agent/build' INFO STDOUT b'/usr/bin/docker\n' INFO Running command 'docker --version' in '/opt/atlassian/pipelines/agent/build' INFO STDOUT b'Docker version 19.03.15, build 99e3ed8\n' INFO Running command 'systemctl start docker' in '/opt/atlassian/pipelines/agent/build' INFO STDERR b'/bin/sh: 1: systemctl: not found\n' INFO Running command 'sudo systemctl start docker' in '/opt/atlassian/pipelines/agent/build' INFO STDERR b'/bin/sh: 1: sudo: not found\n' INFO Trying to remove old Docker container... INFO Running command 'docker container rm test_container' in '/opt/atlassian/pipelines/agent/build' INFO STDERR b'Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?\n'
Every other command of type "docker <dosomething" will fail with the same error message.
I am using the Python3.8 docker image. This is the pipeline step:
- step: &test-docker
name: Build the docker container and run the tests against it
script:
- pip install tox
- docker info
- tox -e test-docker
services:
- docker
Hi and welcome,
Note that if you are using a python docker image ( https://hub.docker.com/_/python/ ). Docker itself isnt installed on that image so you can use python commands within your container but not docker commans as docker daemon isnt present on your container.
You cannot use the docker daemon bitbucket pipelines uses to run your docker image, you need to use the one that comes with your container so you may want to install docker on your container in advance or use another docker container to suit your needs.
Regards
Hello Jack, thank you very much for the quick answer!
So if I understood you correctly I would have to install either docker in the python-container or use the this image https://hub.docker.com/r/atlassian/pipelines-docker-daemon and install python in it.
When trying to install docker in the Dockerfile using
RUN apt-get -yqq update && apt-get -yqq install docker.io
VOLUME /var/run/docker.sock
I still got the same error when running the python script ("Cannot connect to the docker daemon...")
When I try to install python in the pipelines-docker-daemon image I get the message that "apt" and "sudo" is not available in that image.
I found out that it would work to build the docker container in the Pipeline defined with the bitbucket-pipeline.yml and to access the webservice that container is running from the python script.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi, I have faced the same issues.
Can you explain more about how do you build the docker container while you aren't able to connect docker daemon?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.