도커로 Jenkins 설치

Docker Desktop으로 윈도우 환경으로 Jenkins를 설치할 것이다.

참고 내용은 아래의 git 메뉴얼대로 설치를 진행하였다.

GitHub - jenkinsci/docker: Docker official jenkins repo
Docker official jenkins repo. Contribute to jenkinsci/docker development by creating an account on GitHub.

jenkins 이미지를 가져오기

docker pull jenkins/jenkins:lts-jdk21
docker images -a
IMAGE                       ID             DISK USAGE   CONTENT SIZE   EXTRA
jenkins/jenkins:lts-jdk21   7004d07dbcdc        811MB          292MB

jenkins 실행하기

docker run -p 8080:8080 -p 50000:50000 --restart=on-failure jenkins/jenkins:lts-jdk21

각 명령어 뜻은 다음과 같다

  • run : 이미지 entry 실행
  • -p : 포트 할당 구분자로 클론(:) 기준으로 앞부분은 host 포트이고 뒷 부분이 컨테이너 포트로 나눠진다. jenkins 는 8080, 50000 두 개의 포트를 사용하므로 -p 옵션이 2개 필요하다.
  • --restart=on-failure : 컨테이너에서 fail 발생한 경우 restart 시킨다는 의미이다.
  • jenkins/jenkins:lts-jdk21 : 본인의 이미지 또는 외부으로부터 jenkins/jenkins 이미지를 가져오고 lts-jdk21 태그를 찾아서 설치한다는 의미이다. lts 뜻은 long term support 약자로 장기 지원하는 버전이라는 뜻이다.

도커를 실행 후 마지막에는 key 를 출력하여 서비스가 동작 중일 것이다.

[LF]>
[LF]> *************************************************************
[LF]> *************************************************************
[LF]> *************************************************************
[LF]>
[LF]> Jenkins initial setup is required. An admin user has been created and a password generated.
[LF]> Please use the following password to proceed to installation:
[LF]>
[LF]> 116920f56d894715878ec137aa39e910
[LF]>
[LF]> This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
[LF]>
[LF]> *************************************************************
[LF]> *************************************************************
[LF]> *************************************************************

브라우져의 localhost:8080 입력하여 해당 키를 입력하여 설치를 진행해주도록 한다.

localhost:8080 브라우져 접속

출력한 키로 입력하여 continue 버튼으로 진행한다.

커스텀 설치 - Install suggested plugins

plugin 선택 설치할 것인지 물어보고 있다.

설치 진행 중..

어드민 사용자 생성

어드민 사용자를 생성할 것인지 물어본다. 필요가 없는 경우 Skip and continue as admin 으로 무시할 수 있다. 이 경우에는 초기 jenkins가 제공한 초기화 패스워드가 admin 계정의 패스워드로 계정이 생성된다.

Jenkins URL 설정

BUILD_URL 의 환경 변수 제공 주소로 사용할 것인지 물어본다.
선택하지 않고 싶다면 Not now 선택해서 무시해줘도 된다.

Welcome Jenkins

이제 본격적으로 젠킨스를 사용할 수 있다.


설치 jdk 버전 살펴보기

다른 터미널을 열어 docker ps -a 명령어로 조회하여 해당 컨테이너 쉘로 접속 해 변수를 살펴보자.

컨테이너 조회

docker ps -a
CONTAINER ID   IMAGE                       COMMAND                  CREATED          STATUS                        PORTS                                                                                          NAMES
390db0d83ce1   jenkins/jenkins:lts-jdk21   "/usr/bin/tini -- /u…"   25 minutes ago   Up 25 minutes                 0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp, 0.0.0.0:50000->50000/tcp, [::]:50000->50000/tcp   gallant_rhodes
cefd606b4a33   jenkins/jenkins:lts-jdk21   "/usr/bin/tini -- /u…"   31 minutes ago   Exited (130) 25 minutes ago                                                                                                  laughing_sinoussi
5309b525c894   jenkins/jenkins:lts-jdk21   "/usr/bin/tini -- /u…"   31 minutes ago   Exited (130) 31 minutes ago                                                                                                  eager_chaum
1c18a0593f7a   jenkins/jenkins:lts-jdk21   "/usr/bin/tini -- /u…"   44 minutes ago   Exited (130) 31 minutes ago                                                                                                  loving_dewdney

컨테이너 접속 후 변수 살펴보기

docker exec -itu 0 390db0d83ce1 /bin/bash
root@390db0d83ce1:/# env
HOSTNAME=390db0d83ce1
JENKINS_UC_EXPERIMENTAL=https://updates.jenkins.io/experimental
JAVA_HOME=/opt/java/openjdk
JENKINS_INCREMENTALS_REPO_MIRROR=https://repo.jenkins-ci.org/incrementals
COPY_REFERENCE_FILE_LOG=/var/jenkins_home/copy_reference_file.log
PWD=/
JENKINS_SLAVE_AGENT_PORT=50000
JENKINS_VERSION=2.555.1
HOME=/root
LANG=C.UTF-8
JENKINS_UC=https://updates.jenkins.io
TERM=xterm
SHLVL=1
JENKINS_HOME=/var/jenkins_home
REF=/usr/share/jenkins/ref
PATH=/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
_=/usr/bin/env
root@390db0d83ce1:/# exit
exit

JAVA_HOME 값이 /opt/java/openjdk 인 것을 살펴 볼 수 있다.

젠킨스 브라우져 JAVA_HOME 값 살펴보기

브라우져로 접속하여 Jenkins 관리 > 시스템 정보 > 환경 변수 탭을 살펴보면 할당된 JAVA_HOME 과 동일한 것을 살펴 볼 수 있다.

만약 다르다면 jdk installation 으로 컨테이너에 접속한 env 에서 살펴본 JAVA_HOME 값을 입력이 필요하지만, lts-jdk25 에서는 이 과정이 생략해도 된다는 것을 살펴 볼 수 있다.


Docker Volume 정보 저장하기

앞에서 설명한 Docker 는 서비스를 재시작하면 젠킨스 설정이 모두 제거되어 처음부터 다시 시작하므로 볼륨을 설정해 영속성을 유지하는 것이 필요하다.

volume 생성

docker volume create jenkins_home

volume 확인하기

docker volume ls
DRIVER    VOLUME NAME
local     jenkins_home

volume 상세정보 보기

[
    {
        "CreatedAt": "2026-04-27T06:28:51Z",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/jenkins_home/_data",
        "Name": "jenkins_home",
        "Options": null,
        "Scope": "local"
    }
]

다음으로 jenkins docker 실행 시 다음 명령어로 실행한다.

docker run -d --name jenkins-server -v jenkins_home:/var/jenkins_home -p 8080:8080 -p 50000:50000 --restart=on-failure jenkins/jenkins:lts-jdk21

추가한 명령어를 살펴보자.

  • -d : 백그라운드로 실행할 수 있도록 데몬 옵션이다.
  • --name : 해당 컨테이너 이름을 지정한 것으로 jenkins-server 편의상 입력하였다.
  • -v jenkins_home:/var/jenkins_home : 앞서 생성한 볼륨을 연결한 것이다.
    구분자 클론(:) 기준으로 앞 부분은 별칭자이며 뒷 부분은 컨테이너에서 불려올 호스트 디렉토리를 지정한다.

데몬으로 도커를 시작하였으므로 stop, start, restart 등 명령어를 수월하게 사용할 수 있다.

docker stop jenkins-server
docker start jenkins-server
docker restart jenkins-server