도커(Docker) 설치
터미널에서 다음 명령문을 실행하여 도커 설치 버전을 확인합니다. 또는 docker --version으로 대체 할 수 있습니다.
$ docker -v
Docker version 20.10.13, build a224086
개발 중인 PC에서 도커가 설치되어 있지 않다면 이 블로그의 포스트 또는 도커 도큐먼트를 참고합니다.
설치 요구 사항
도커를 실행 가능한 환경이며, 도커에 대한 사전 지식이 있어야 합니다. 젠킨스 서버를 구축에 대한 최소한의 요구 사항은 다음과 같습니다. 합적인 하드웨어 권장 사항은 다음 도큐먼트를 확인합니다.
- 램 256MB 이상
- 10GB 이상의 디스크 공간
소규모 프로젝트 또는 팀에서는 다음 하드웨어 스팩을 만족하는 것을 권장합니다.
- 램 4GM 이상
- 50GM 이상의 디스크 공간
도커를 사용하여 젠킨스 설치
이번 섹션에서는 자바 서블릿 컨테이너/애플리케이션 서버(Jetty)가 내장된 독립 프로세스 환경에서 젠킨스를 설치하고 실행하는 과정에 대해서 소개합니다. 이미 도커에 대한 사용법을 숙지하고 있으며 도커가 실행 가능한 환경이라는 가정하에 진행합니다.
도커 네트워크 생성
터미널에서 다음 명령문을 실행합니다.
$ docker network create jenkins
이어서 다음 명령문을 실행하여 네트워크 생성을 확인합니다.
% docker network ls
NETWORK ID NAME DRIVER SCOPE
57e5e0e17fa5 jenkins bridge local
DinD(Docker in Docker)에서 실행
젠킨스 노드 내에서 도커 명령을 실행하기 위해 docker:dind 이미지를 다운로드합니다.
$ docker pull docker:dind
이어서 다음 명령문을 실행하여 이미지 다운로드 여부를 확인합니다.
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker dind a072474332af 16 hours ago 235MB
이미지는 다음과 같이 컨테이너에서 실행됩니다.
$ 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 \
docker:dind \
--storage-driver overlay2
다음 명령문으로 실행중인 컨테이너 목록을 출력합니다.
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
99f7ecd2fbdf docker:dind "dockerd-entrypoint.…" 11 seconds ago Up 9 seconds 2375/tcp, 0.0.0.0:2376->2376/tcp jenkins-docker
컨테이너를 종료하려면 다음과 같이 입력합니다.
$ docker stop jenkins-docker
젠킨스 이미지 생성
Dockerfile 이름의 파일을 생성하고 다음 내용을 입력합니다. 2.332.1-jdk11 태그의 이미지를 기본 이미지로 사용합니다. 별도의 태그를 사용하려면 다음 도커 허브 페이지를 참고합니다.
FROM jenkins/jenkins:2.332.1-jdk11
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.25.3 docker-workflow:1.28"
Dockerfile이 위치한 디렉토리에서 다음 명령어를 실행하여 이미지를 빌드합니다.
$ docker build -t myjenkins-blueocean:2.332.1-1 .
이어서 이미지가 정상적으로 빌드되었는지 확인합니다.
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
myjenkins-blueocean 2.332.1-1 3eba2480b004 6 minutes ago 788MB
docker dind a072474332af 16 hours ago 235MB
젠킨스 컨테이너 실행
방금 생성한 젠킨스 이미지를 컨테이너에서 실행합니다.
$ docker run \
--name jenkins-blueocean \
--rm \
--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 \
myjenkins-blueocean:2.332.1-1
이어서 실행중인 컨테이너 목록을 출력합니다.
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c9389b391b92 myjenkins-blueocean:2.332.1-1 "/sbin/tini -- /usr/…" 4 seconds ago Up 3 seconds 0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp jenkins-blueocean
3c926f826a16 docker:dind "dockerd-entrypoint.…" 12 minutes ago Up 12 minutes 2375/tcp, 0.0.0.0:2376->2376/tcp jenkins-docker
웹 브라우저에서 접속
이제 웹 브라우저에서 젠킨스 서버에 접속 할 수 있습니다. 다음 URL(http://localhost:8080/)에 접속합니다. 이전 섹션을 정상적으로 진행하였다면 다음과 같은 페이지가 출력됩니다.
젠킨스 언락
웹 브라우저에서 젠킨스 서버에 처음 접속하면 Unlock Jenkins라는 문구와 함께 Administrator password 입력을 요구합니다(젠킨스 언락은 최초 진입시에만 진행합니다).
터미널에서 다음 명령문을 실행하여 컨테이너 로그를 출력합니다.
$ docker logs jenkins-blueocean
로그가 출력되면 다음 사진과 같이 Administrator password를 확인합니다.
또는 젠킨스 컨테이너에 직접 입장하여 initialAdminPassword 파일에 작성되어 있는 Administrator password를 확인 할 수 있습니다(만약 다른 젠킨스 이미지를 사용하고 있다면 /var/jenkins_home/secrets/initialAdminPassword 경로를 확인합니다).
$ docker exec -it jenkins-blueocean /bin/bash
$ cat /var/jenkins_home/secrets/initialAdminPassword
89b4c8f91c024204b8db6feac1851913
최초 플러그인 설치
Administrator password를 입력하면 최초 플러그인 설치에 대해서 안내합니다.
- Install suggested plugins
통상적으로 가장 많이 이용하는 플러그인에 따라서 기본 설치합니다. - Select plugins to install
사용자가 직접 설치 플러그인을 선택합니다.
플러그인은 나중에 다시 설치할 수 있으므로 Install suggested plugins을 선택하여 기본 사항으로 진행합니다.
Administrator 계정 생성
플러그인 설치가 마무리되면 Administrator 계정 생성을 진행합니다. 빈 칸을 채우고 다음으로 넘어갑니다. 관리자 계정이므로 팀 프로젝트에서 진행 시 보안에 주의합니다.
계정을 생성하면 마지막으로 젠킨스 URL을 안내하고 최초 진입에 따른 설정이 마무리됩니다.
이제 젠킨스를 사용할 준비가 모두 끝났습니다. 젠킨스 컨테이너를 종료하고 다시 시작합니다. 만약 최초 셋팅을 처음부터 다시 진행하게 되면 볼륨 마운트가 제대로 진행되지 않았는지 의심해야 합니다.
볼륨 마운트가 안된 상태에서 젠킨스에 빌드 셋팅을 추가하는 등의 작업을 하면 컨테이너가 종료되었을 때 저장 정보가 모두 휘발됩니다. 반드시 볼륨 마운트 상태를 확인합니다.
'Build > Jenkins' 카테고리의 다른 글
[Infrastructure/Jenkins] 플러그인(Plugin) 설치 (0) | 2022.04.12 |
---|---|
[Infrastructure/Jenkins] Scripted 파이프라인 기본 구문 (0) | 2022.04.12 |
[Infrastructure/Jenkins] 파이프라인 소개 및 젠킨스 웹 UI로 파이프라인 만들기 (0) | 2022.04.11 |
[Infrastructure/Jenkins] 젠킨스(Jenkins)란? (0) | 2022.04.06 |
[Infrastructure/Jenkins] 파이프라인에서 "CreateProcess error=2, 지정된 파일을 찾을 수 없습니다" 오류 (0) | 2022.04.04 |