If I'm running Bamboo server and the agent in Docker containers how should I set up containerised builds?
Should the agent be able to start containers on the host or do Docker in Docker? Any other ideas? Has anyone done this? I'd like to trash the container that actually does the build, so I'd like to avoid adding the build tools to the agent image.
From your description I would say that mounting the host Docker socket as volume in the agent container would be the best option, for reasons described here.
Your agent image would then only need to install the Docker client binary, which can be done by extending the Bamboo agent base image as described in the readme. Your agent would manage your build container as siblings.
In such a setup, you should be able to use the Bamboo Docker Runner.
If you happen to run on Kubernetes (which I cannot derive from your description), Docker-in-Docker is most often the best option (security aspects kept in mind), as described here. This configuration is implemented in the plugin Kubernetes Agents for Bamboo (note that I am affiliated with this plugin).
Happy to discuss further if you have any more questions.
Thanks for your reply. This sounds like exactly what I need to do. I'd wondered about mounting the host's Docker socket, but wasn't sure if that was a sensible solution.
I'm not on Kubernetes so using Docker on the host sounds ideal.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Keep in mind that going the socket route, you might run into permission issues as the Bamboo agent base image is running as user 'bamboo' (UID 1000), which will in a usual setup have no permissions over this socket. You will need to add this user to the docker group on the host system, change the socket permissions or otherwise extend the base image to run as root.
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.