Jenkins Docker 설치 하기 (ubuntu)

Jenkins Server를 직접 설치해야할 때 필요한 문서 (참고용)
Jenkins를 단독으로 설치하려면 JDK 가 필요한데 Docker 파일에는 포함되어 있어 별도 설치 생략 가능
루트 계정으로 사용은 권장하진 않음 추후 계정 생성 후 sudo 명령어 미사용 하도록 변경하는 것이 좋음
ubuntu에서는 Docker 설치 리포지토리가 기본적으로 포함되지 않아, 별도로 Docker 공식 리포지토리를 추가해야 최신 버전을 설치할 수 있습니다. 따라서 GPG 패키지 설치가 필요

사전 준비

ubuntu server 설치
네트워크 설정
포트 오픈 (방화벽 설정이 되어 있다면)

openssh 설치 (외부에서 ssh 접근을 위해 설치)

#설치
sudo apt install openssh-server

#실행
sudo systemctl start ssh

#방화벽 적용
sudo ufw allow 22
sudo ufw reload

ubuntu Docker 설치


#필수 패키지 설치
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release
sudo apt install openssh-server

#Docker 패키지 검증을 위한 GPG 패키지 설치
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

#Docker 레파지토리 추가
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

#Docker 설치
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

#Docker 실행
sudo systemctl start docker

#Docker 사용자 추가
sudo usermod -aG docker $USER (userId)

#변경사항 적용
newgrp docker

#방화벽 적용
sudo ufw allow 50001
sudo ufw reload

#설치 확인
docker --version

#jenkins docker 이미지 받기
docker pull jenkins/jenkins:lts

#jenkins docker 실행
docker run -d --name jenkins -restart on-failure -p 50001:8080 -p 50000:50000 -v /home/${id}/jenkins:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -e TZ=Asia/Seoul -u $(id -u ${id}):$(id -g ${id}) jenkins/jenkins

-d : 백그라운드 실행
-restart : 컨테이너가 비정상 종료될 경우 자동 재시작
-p : 50001번 포트로 jenkins 웹서비스 8080 포트 바인딩
-p : 50000번 포트 빌드 에이전트 연결을 위한 포트 바인딩
-v : 해당 디렉토리를 컨테이너 디렉토리에 마운트
-v : Docker 데몬 소켓을 컨테이너에 마운트
-e : 컨테이너 시간대를 한국 시간대로 설정
-u : Jenkins 컨테이너를 특정 사용자 권한으로 실행

# 도커 프로세스 확인
docker ps

Docker 포트 포워딩을 위한 nginx 설치

#nginx 설치
sudo apt-get install nginx

#nginx 실행
systemctl start nginx

#jenkins conf 파일 생성
cd /etc/nginx/conf.d
vi jenkins.conf

upstream jenkins_server {
    127.0.0.1:50001;
}

server {
    listen 80;
    server_name xxx.xxx.xxx.xxx;
    
    access_log /home/${userId}/logs/jenkins_access.log;
    
    location / {
        proxy_pass http://jenkins_server;
        proxy_set_header Host $host;
        proxy_set_header X-Real_IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

이렇게 세팅 하면 50001번 포트에 대한 요청을 받아 해당 Docker Jenkins UI 포트로 포워딩 가능

#저장 후 nginx 재기동
systemctl reload nginx
sudo nginx -t

Jenkins 접속

http://ip:50001

password 확인 위해 Docker 접속


#클라이언트에서 -> ubuntu 서버 접속
ssh ${userId}@${ip} 


#도커 컨테이너 접속
docker exec -it jenkins /bin/bash

cat /var/jenkins_home/secrets/initialAdminPassword
xxx511085c6a41xx88955b960e1fxx67

설치 완료

profile
어제보다 오늘이 더 나은 개발자

0개의 댓글