Programming/CICD

(Jenkins, GitLab CI/CD 구축) 1. Docker Jenkins 설치 및 구동하기

Jan92 2025. 3. 2. 21:47
반응형

(Jenkins, GitLab CI/CD 구축) 1. Docker Jenkins 설치 및 구동하기

Docker + Jenkins 설치 및 구동

해당 포스팅은 Jenkins, GitLab 기반 CI/CD 구축의 첫 번째 과정인 'VM Instance에 Docker를 통해 Jenkins를 설치 및 구동하는 과정'을 정리하였습니다.

이후의 CI/CD 구축 과정들도 정리하여 포스팅할 예정이니 같이 참고해 주시면 좋을 것 같습니다.

 

CI/CD를 구축 및 테스트하는 개발 환경과 실제로 사용할 운영 환경의 인프라 환경이 다를 수 있기 때문에 환경의 일관성을 유지하기 위해 도커를 사용하여 젠킨스를 구동하였으며, 각각의 프로젝트 요구사항 및 인프라 환경에 따라 도커 기반이 아닌 서버에서 바로 젠킨스를 구동하는 방식을 사용하는 경우도 있을 수 있습니다.

 

* 아래 과정에서 사용된 VM 인스턴스는 'Ubuntu 20.04 LTS' 환경이며 http, https 트래픽 허용 및 외부에서 접근이 필요한 포트에 대한 허용 작업이 되어있는 상태입니다.

(ubuntu 외 운영체제에서도 아래 docker docs의 내용을 참고하여 운영체제에 따른 docker engine 설치를 진행하면 이후 과정은 비슷할 것 같습니다.)

 

 


1. Ubuntu 환경에 Docker Engine 설치

https://docs.docker.com/engine/install/ubuntu/

 

Ubuntu

Jumpstart your client-side server applications with Docker Engine on Ubuntu. This guide details prerequisites and multiple methods to install Docker Engine on Ubuntu.

docs.docker.com

먼저 다음 도커 문서의 Docker Engine 설치 매뉴얼을 참고하여 ubuntu 환경에 도커 엔진을 설치합니다.

 

 

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

Docker 공식 GPG 키를 추가하는 과정입니다.

 

먼저 HTTPS 연결을 위해 필요한 인증서(ca-certificates)와 curl 도구를 설치합니다.

이후 GPG Key를 저장할 디렉터리를 생성하고, Docker 공식 GPG 키를 도커 서버에서 다운로드하여 docker.asc 파일에 저장합니다.

이어서 docker.asc 파일에 모든 사용자에 대한 읽기 권한을 부여합니다.

 

 

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

Apt source 목록에 docker repository를 추가하는 과정입니다.

repository를 추가한 후 apt-get update 명령어를 통해 패키지 목록을 업데이트하여 도커 패키지를 사용할 수 있도록 준비합니다.

 

* GPG Key(GNU Privacy Guard Key)란, 소프트웨어 패키지의 무결성 검증 등에 사용되며, 해당 키를 추가함으로써 다운로드하는 docker 패키지가 docker에서 제공하는 안전한 소프트웨어라는 것을 보증할 수 있습니다.

 

 

# Install the Docker packages.
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

GPG 키 추가 작업 후, 다음 명령어를 통해 도커 패키지를 설치합니다.

 

 

# Verify that the installation is successful by running the hello-world image:
sudo docker run hello-world

도커에서 제공하는 'hello-world' 이미지를 통해 컨테이너의 정상 실행 여부를 확인할 수 있습니다.

 

 

docker.sock: connect: permission denied

도커 패키지 설치 후, 도커 명령어 실행 시 다음과 같이 'permission denied' 오류가 발생할 수 있는데요.

이는 해당 사용자가 docker.sock 소켓 파일에 대한 권한이 없기 때문에 명령어를 실행할 수 없는 오류로 아래와 같이 docker 그룹에 해당 사용자를 추가하여 해결할 수 있습니다.

 

 

# Add user to Docker Group
sudo usermod -aG docker USERNAME

다음과 같이 도커 그룹에 사용자를 추가 후 재접속하게 되면 permission denied 오류가 발생하지 않습니다.

 

 


2. Jenkins 구동하기

# jenkins image pull
docker pull jenkins/jenkins:lts

도커 허브에서 공식 jenkins 이미지를 다운로드합니다.

jenkins:lts는 젠킨스의 LTS(Long Term Support) 버전을 의미하기 때문에 다른 버전을 원하는 경우 lts 대신 jenkins:latest, jenkins:jdk17 등 원하는 버전에 대한 태그를 사용할 수 있습니다.

 

 

# jenkins run
docker run -d -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home --name jenkins jenkins/jenkins:lts

이어서 도커 컨테이너를 실행시키는 명령어입니다.

해당 명령어에서 사용된 각각의 옵션 내용은 아래와 같습니다.

 

-d : 컨테이너를 백그라운드에서 실행

-p 8080:8080 : 포트 포워딩 옵션으로 호스트 시스템의 8080 포트를 컨테이너의 8080 포트에 매핑

-p 50000:50000 : 동일하게 포트 포워딩 옵션으로 jenkins가 에이전트와 통신할 때 사용되는 포트

-v jenkins_home:/var/jenkins_home : -v는 볼륨 마운트 옵션으로 호스트 시스템의 jenkins_home 볼륨을 컨테이너 내부의 /var/jenkins_home에 마운트 하는 설정입니다.

 

* 호스트 시스템의 jenkins_home 볼륨에 jenkins 데이터를 저장하기 때문에 컨테이너를 삭제하거나 재시작해도 기존의 데이터를 유지할 수 있습니다. (데이터 지속성 보장을 위한 옵션)

 

 

# search docker volume
docker volume inspect jenkins_home

추가적으로 jenkins_home 볼륨에 대한 세부 정보는 다음 명령어를 통해 확인할 수 있습니다.

 

 

 

Unlock Jenkins

젠킨스가 정상적으로 구동되고 vm instance의 ip:port로 접근하게 되면 다음과 같이 Unlock Jenkins 타이틀과 함께 Administrator password를 입력하는 화면이 나오게 됩니다.

 

 

# Administrator password 확인
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword

Administrator password의 경우 다음 명령어를 통해 확인할 수 있습니다.

 

 

 

Customize Jenkins

Customize Jenkins 과정에서는 우선 'Install suggested plugins' 옵션을 통해 많이 사용되는 플러그인들을 모두 설치했습니다.

 

 

 

Create First Admin User

plugin 설치 완료 후 Admin User 계정을 생성합니다.

 

 

 

Instance Configuration

이어서 Jenkins UI의 기본 접속 경로로 사용할 URL을 지정합니다.

 

 

 

Jenkins Dashboard

위 과정이 완료되면 이미지와 같은 젠킨스 메인 페이지에 접속되는 것을 확인할 수 있습니다.

 

여기까지 Jenkins, GitLab CI/CD 구축의 첫 번째 과정인 Docker Jenkins 설치 및 구동 내용을 정리하였으며, 이어지는 과정도 정리되는 대로 포스팅하여 아래 링크로 남기도록 하겠습니다.

감사합니다.

 

 

 

< 참고 자료 >

https://docs.docker.com/engine/install/ubuntu/
https://github.com/jenkinsci/docker/blob/master/README.md

반응형