Saturday, December 24, 2022

Customizing a docker image

In this example, going to customize the jenkins image


Run Jenkins in Docker

In this tutorial, you’ll be running Jenkins as a Docker container from the jenkins/jenkins Docker image.


To run Jenkins in Docker, follow the relevant instructions below for either macOS and Linux or Windows.


On macOS and Linux

Open up a terminal window.


Create a bridge network in Docker using the following docker network create command:


docker network create jenkins


In order to execute Docker commands inside Jenkins nodes, download and run the docker:dind Docker image using the following docker run command:


docker run \

  --name jenkins-docker \

  --rm \

  --detach \

  --privileged \

  --network jenkins \

  --network-alias docker \

  --env DOCKER_TLS_CERTDIR=/certs \

  --volume jenkins-docker-certs:/certs/client \

  --volume jenkins-data:/var/jenkins_home \

  --publish 2376:2376 \

  --publish 3000:3000 --publish 5000:5000 \

  docker:dind \

  --storage-driver overlay2 



Now to customize the Jemkins image, below steps can be followed 


Customise official Jenkins Docker image, by executing below two steps:


Create Dockerfile with the following content:


FROM jenkins/jenkins:2.375.1

USER root

RUN apt-get update && apt-get install -y lsb-release

RUN curl -fsSLo /usr/share/keyrings/docker-archive-keyring.asc \

  https://download.docker.com/linux/debian/gpg

RUN echo "deb [arch=$(dpkg --print-architecture) \

  signed-by=/usr/share/keyrings/docker-archive-keyring.asc] \

  https://download.docker.com/linux/debian \

  $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list

RUN apt-get update && apt-get install -y docker-ce-cli

USER jenkins

RUN jenkins-plugin-cli --plugins "blueocean:1.26.0 docker-workflow:563.vd5d2e5c4007f"

Build a new docker image from this Dockerfile and assign the image a meaningful name, e.g. "myjenkins-blueocean:2.375.1-1":


docker build -t myjenkins-blueocean:2.375.1-1 .


Keep in mind that the process described above will automatically download the official Jenkins Docker image if this hasn’t been done before.


Run your own myjenkins-blueocean:2.375.1-1 image as a container in Docker using the following docker run command:


docker run \

  --name jenkins-blueocean \

  --detach \

  --network jenkins \

  --env DOCKER_HOST=tcp://docker:2376 \

  --env DOCKER_CERT_PATH=/certs/client \

  --env DOCKER_TLS_VERIFY=1 \

  --publish 8080:8080 \

  --publish 50000:50000 \

  --volume jenkins-data:/var/jenkins_home \

  --volume jenkins-docker-certs:/certs/client:ro \

  --volume "$HOME":/home \

  --restart=on-failure \

  --env JAVA_OPTS="-Dhudson.plugins.git.GitSCM.ALLOW_LOCAL_CHECKOUT=true" \

  myjenkins-blueocean:2.375.1-1 



references:


No comments:

Post a Comment