[CI/CD-P1] Install Jenkins with Docker

Install Jenkins with Docker 🐳 🐳 🐳 Link bài viết gốc tại blog của mình https://ductn.info/install-jenkins-with-docker/ Downloading and running Jenkins on Docker The recommended Docker image to use is the Official jenkins/jenkins image from Docker hub repo. A new jenkins/jenkins image is published each time a new release of Jenkins Docker is published (Don’t use

Install Jenkins with Docker 🐳 🐳 🐳

Link bài viết gốc tại blog của mình https://ductn.info/install-jenkins-with-docker/

Downloading and running Jenkins on Docker

The recommended Docker image to use is the Official jenkins/jenkins
image from Docker hub repo. A new jenkins/jenkins
image is published each time a new release of Jenkins Docker is published (Don’t
use Jenkins image – Already deprecated).
OK!!! Let’s start.

Note: To install Jenkins, we need to deploy 2 containers: docker:dind
and jenkins/jenkins.

Step 1: Create bridge network for 2 container

docker network create jenkins

Step 2: Setup docker:dind(DinD: Docker-in-Docker): is just what it
says running Docker inside a Docker container

docker run --name jenkins-docker -d 
  --privileged --network jenkins --network-alias docker 
  --env DOCKER_TLS_CERTDIR=/certs 
  --volume docker-certs-jk:/certs/client 
  --volume jenkins-home:/var/jenkins_home 
  -p 2376:2376 docker:dind --storage-driver overlay2

--privileged: Running Docker in Docker currently requires privileged access
to function properly.

--network-alias docker: Makes the Docker in Docker container available as
the hostname docker within the jenkins network.

--env DOCKER_TLS_CERTDIR=/certs: Enables the use of TLS in the Docker server.

--volume ~/jenkins-home:/var/jenkins_home: Mounting volume jenkins-home to
workspace directory of Jenkins.

Steps 3: Deploy container Jenkins. We can use command to run container:

docker run --name jenkins -d 
  --network jenkins --env DOCKER_HOST=tcp://docker:2376 
  --env DOCKER_CERT_PATH=/certs/client --env DOCKER_TLS_VERIFY=1
  -p 8080:8080 -p 50000:50000 
  -v jenkins_home:/var/jenkins_home 
  -v docker-certs-jk:/certs/client:ro 
  jenkins/jenkins:2.289.3-lts-jdk11

But i’ll custom for my new jenkins image. Create Dockerfile:

FROM jenkins/jenkins:2.289.3-lts-jdk11USER rootRUN apt-get update && apt-get install -y apt-transport-https 
    ca-certificates curl gnupg2 
    software-properties-commonRUN curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -RUN apt-key fingerprint 0EBFCD88RUN add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian 
     $(lsb_release -cs) stable"RUN apt-get update && apt-get install -y docker-ce-cliUSER jenkins

Navigate to directory with Dockerfile and build new image:

docker build -t jenkins-new:v1 .

Then, we run the new jenkins image as container in Docker:

docker run --name jenkins -d 
  --network jenkins --env DOCKER_HOST=tcp://docker:2376 
  --env DOCKER_CERT_PATH=/certs/client --env DOCKER_TLS_VERIFY=1
  -p 8080:8080 -p 50000:50000 
  -v jenkins_home:/var/jenkins_home 
  -v docker-certs-jk:/certs/client:ro 
  jenkins-new:v1

Check our result:

➜  jenkins git:(main) ✗ docker ps
CONTAINER ID   IMAGE            COMMAND                  CREATED        STATUS         PORTS                                                                                      NAMES
d5609c0f9f69   jenkins-new:v1   "/sbin/tini -- /usr/…"18 hours ago   Up 9 seconds   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:50000->50000/tcp, :::50000->50000/tcp   jenkins
339877c8ca20   docker:dind      "dockerd-entrypoint.…"18 hours ago   Up 5 seconds   2375/tcp, 0.0.0.0:2376->2376/tcp, :::2376->2376/tcp                                        jenkins-docker

Now, we need to config Jenkins after installation, let access the dashboard
at localhost:8080, and unlock jenkins using password:

Follow the tutorial, we can take the password at /var/lib/jenkins/secrets/initialAdminPassword

CONTAINER ID   IMAGE            COMMAND                  CREATED        STATUS          PORTS                                                                                      NAMES
d5609c0f9f69   jenkins-new:v1   "/sbin/tini -- /usr/…"19 hours ago   Up 29 minutes   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:50000->50000/tcp, :::50000->50000/tcp   jenkins
339877c8ca20   docker:dind      "dockerd-entrypoint.…"19 hours ago   Up 29 minutes   2375/tcp, 0.0.0.0:2376->2376/tcp, :::2376->2376/tcp                                        jenkins-docker
➜  jenkins git:(main) ✗ docker exec -it d5 bash[email protected]:/$ cat /var/lib/jenkins/secrets/initialAdminPassword
YOUR_PASSWORD_IN_HERE

After unlock jenkins, the Customize Jenkins page appears. We choose Install suggested plugins,
and Create Admin User. Jenkins ready to use 🤟 🤟 🤟.

And we can install BlueOcean plugins (GUI for CI/CD Pipeline)

OK Done !!! Thanks you for reading my article 🥰🥰🥰

References

Nguồn: viblo.asia

Bài viết liên quan

WebP là gì? Hướng dẫn cách để chuyển hình ảnh jpg, png qua webp

WebP là gì? WebP là một định dạng ảnh hiện đại, được phát triển bởi Google

Điểm khác biệt giữa IPv4 và IPv6 là gì?

IPv4 và IPv6 là hai phiên bản của hệ thống địa chỉ Giao thức Internet (IP). IP l

Check nameservers của tên miền xem website trỏ đúng chưa

Tìm hiểu cách check nameservers của tên miền để xác định tên miền đó đang dùn

Mình đang dùng Google Domains để check tên miền hàng ngày

Từ khi thông báo dịch vụ Google Domains bỏ mác Beta, mình mới để ý và bắt đầ