지난 시간에 Jenkins를 직접 시스템에서 실행을 시켰다. 이번에 Docker container에서 Jenkins를 실행하는 방법을 실행하겠다.
장점:
1. 초기 설정이 간단하다.
2. 시스템 리소스를 Docker 오버헤드 없이 직접 사용한다.
단점:
1. Jenkins와 관련된 모든 종속성이 시스템에 설치된다. 이로 인해 어플리케이션과의 충돌 가능성이 있다.
2. 버전 업데이트 및 롤백이 더 복잡할 수 있다.
장점:
1. 컨테이너화된 환경에서 격리되므로 시스템과의 충돌을 방지한다.
2. 다른 시스템 또는 클라우드 환경으로의 마이그레이션이 쉽다.
3. 버전 관리가 쉽다. 특정 버전의 Jenkins 이미지를 선택적으로 실행할 수 있다.
4. 볼륨을 사용하여 데이터를 영속화하면, 컨테이너를 제거하거나 새 버전으로 업그레이드해도 설정과 데이터가 유지된다.
단점:
1. Docker에 대한 약간의 이해가 필요하다
2. 리소스 사용량에 약간의 오버헤드가 있을 수 있다.(대부분의 경우 미미하다.)
먼저 프리티어 EC2 메모리 부족을 해결해야 한다.
스왑 파일 생성하기 (좀 오래걸린다)
sudo dd if=/dev/zero of=/swapfile bs=128M count=16
스왑 파일에 대한 읽기 쓰기 권한 업데이트 하기
sudo chmod 600 /swapfile
Linux 스왑 영역 설정하기
sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapon -s
# 1.파일 열기
sudo vi /etc/fstab
# 2.파일 가장 마지막에 다음을 추가하고 :wq로 저장하고 종료
/swapfile swap swap defaults 0 0
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
도커 컨테이너 안에서 젠킨스가 실행될 수 있도록 하자.
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
명령어를 통해 컨테이너가 잘 실행 중인지 확인한다.