[docker/jenkins] docker 컨테이너 안에서 jenkins CI&CD 배포 방법(1)

무1민·2023년 8월 26일
1

infra

목록 보기
5/14
post-thumbnail

지난 시간에 Jenkins를 직접 시스템에서 실행을 시켰다. 이번에 Docker container에서 Jenkins를 실행하는 방법을 실행하겠다.

직접 시스템에서 Jenkins 실행:

장점:
1. 초기 설정이 간단하다.
2. 시스템 리소스를 Docker 오버헤드 없이 직접 사용한다.

단점:
1. Jenkins와 관련된 모든 종속성이 시스템에 설치된다. 이로 인해 어플리케이션과의 충돌 가능성이 있다.
2. 버전 업데이트 및 롤백이 더 복잡할 수 있다.

Docker에서 Jenkins 실행:

장점:
1. 컨테이너화된 환경에서 격리되므로 시스템과의 충돌을 방지한다.
2. 다른 시스템 또는 클라우드 환경으로의 마이그레이션이 쉽다.
3. 버전 관리가 쉽다. 특정 버전의 Jenkins 이미지를 선택적으로 실행할 수 있다.
4. 볼륨을 사용하여 데이터를 영속화하면, 컨테이너를 제거하거나 새 버전으로 업그레이드해도 설정과 데이터가 유지된다.

단점:
1. Docker에 대한 약간의 이해가 필요하다
2. 리소스 사용량에 약간의 오버헤드가 있을 수 있다.(대부분의 경우 미미하다.)

먼저 프리티어 EC2 메모리 부족을 해결해야 한다.

  • 현재 젠킨스 서버로 사용하는 프리티어 EC2는 젠킨스를 버틸 수 없다. 젠킨스를 도커로 띄우고 설정까지는 문제가 없으나 깃허브 웹훅으로 젠킨스를 이용해 빌드하는 과정에서 램을 1기가 이상 사용하게 되면서 EC2가 먹통이 되어버린다.
  1. 스왑 파일 생성하기 (좀 오래걸린다)
    sudo dd if=/dev/zero of=/swapfile bs=128M count=16

  2. 스왑 파일에 대한 읽기 쓰기 권한 업데이트 하기
    sudo chmod 600 /swapfile

  3. Linux 스왑 영역 설정하기
    sudo mkswap /swapfile

  1. 스왑 공간에 스왑 파일을 추가하여 스왑 파일을 즉시 사용할 수 있도록 하기
    sudo swapon /swapfile
  2. 절차가 성공했는지 확인하기
    sudo swapon -s
  1. /etc/fstab 파일을 편집하여 부팅 시 스왑 파일을 활성화하기
# 1.파일 열기
sudo vi /etc/fstab

# 2.파일 가장 마지막에 다음을 추가하고 :wq로 저장하고 종료
/swapfile swap swap defaults 0 0

  1. free 명령어로 메모리 확인하기

Docker 설치

sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io

Jenkins 실행

도커 컨테이너 안에서 젠킨스가 실행될 수 있도록 하자.

docker run -itd --name jenkins -p 8081:8080  -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -v /home/ubuntu/jenkins:/var/jenkins_home/workspace/ -e TZ=Asia/Seoul -u root jenkins/jenkins:lts-jdk17

주의할 점은 컨테이너 포트를 8080으로 고정해야 한다.
젠킨스 자체 설정이 8080으로 맞춰져 있어서 그렇다고 한다.
호스트 포트 번호를 변경해서 그 포트번호로 접근하도록 하자

실행 후 docker ps 명령어를 통해 컨테이너가 잘 실행 중인지 확인한다.

profile
야호

0개의 댓글