Jenkins 2.0 Master In Docker
We can just use the Jenkins Docker official image, or you can just install Jenkins 2.0 normally.
Jenkins Slave In Docker
Setup
- Install Docker
- Open up TCP port by adding the following in /etc/default/docker
DOCKER_OPTS="-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock"
- On Jenkins Master, install Docker Plugin on Master->Manage Jenkins->Manage Plugins
- On Master->Manage Jenkins->Cloud configure the communication with Jenkins slave node
- Docker URL is the IP of the Slave machine in TCP
- Click on Test Connection, if successful will show the Docker version and Docker API version
- Have Docker Jenkins Slave images in the slave box
- On Master->Manage Jenkins->Manage Plugins->Cloud->Add Docker Template
- The SSH credentials to access the Docker Jenkins Slave container is the Jenkins user setup in Dockerfile and Jenkins Master
Docker Slave Image
There are some Docker images that you can use like Docker Slave image , or you can write your own Dockerfile.
Docker image contains a minimum of:
- Ubuntu
- Java
- Jenkins user and password
- Git
- OpenSSH for Jenkins Master to SSH to Slave machine
- Maven, Ruby, etc depends on what your project needs
- Version managers like NPM or RVM cannot be installed in Docker due to we cannot “source” files like .bashrc
It is a sshd service running on port 22, therefore in the Dockerfile, you will need:
EXPOSE 22
CMD [“/usr/sbin/sshd”, “-D”]
Running
- We restrict Jenkins jobs to run based on the label we give in Docker template
- When job runs, Jenkins Master will spin up the Docker image on the Slave machine
- When job completes, the Docker image will be terminated
- Therefore, we can have multiple Docker images for different types of jobs, Ruby, Maven, NodeJS on a single Slave machine
Leave a Reply