AWS docker + jenkins 설치 방법

청포도봉봉이·2023년 9월 18일
1

AWS

목록 보기
5/14
post-thumbnail

🚩 개요

ec2 서버에 직접 jenkins를 설치하는 방법도 있지만 필자는 docker를 이용해 이미지를 pull하여 jenkins를 설치해보고 싶었다. 그 방법을 정리해봤다.

👉 Docker란

Docker는 컨테이너 기반의 오픈 소스 플랫폼으로, 소프트웨어를 패키지로 만들어서 실행하는데 사용됩니다. 이렇게 패키지화된 소프트웨어를 컨테이너라고 부르며, 각 컨테이너는 코드, 런타임, 시스템 도구 등 해당 소프트웨어를 실행하는데 필요한 모든 것을 포함합니다. 이런 방식은 개발자가 작성한 코드가 어떤 환경에서도 같은 방식으로 동작할 수 있도록 보장해줍니다.

👉 Jenkins란

jenkins는 지속적인 통합(Continuous Integration) 및 지속적인 배포(Continuous Deployment)을 가능하게 하는 오픈소스 자동화 서버입니다. Jenkins를 사용하면 개발 중에 발생할 수 있는 다양한 타입의 스크립트를 실행하여 새로운 코드 변경사항들에 대해 자동으로 빌드와 테스트 과정을 거칠 수 있습니다.




✍ docker


👉 docker 설치

sudo yum update # yum 패키지 업데이트

sudo yum install docker # docker 설치

sudo docker -v # 설치된 docker 버전 확인


👉 docker 서비스 실행

sudo service docker start # docker 서비스 실행

systemctl status docker.service #docker 서비스 실행 확인


👉 docker user 권한 설정

sudo usermod -a -G docker ec2-user #ec2-user 권한 설정
sudo usermod -a -G docker root

sudo service docker restart # 도커 서비스 재실행

✍ jenkins


👉 jenkins 설치

docker 허브 링크

docker 허브에 접속 후 jenkins를 검색한다.

sudo docker pull jenkins/jenkins:lts # docker jenkins 이미지 pull

sudo docker images # 로컬에 존재하는 docker images 확인

sudo docker run -d -p 8000:8080 -v /jenkins:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock --name jenkins -u root jenkins/jenkins:lts
  • sudo: 이 명령어는 'superuser do'의 줄임말로, 리눅스에서 root 사용자 권한으로 명령을 실행하도록 합니다. Docker를 실행하는데 필요한 권한을 부여받기 위해 사용합니다.

  • docker run: Docker 컨테이너를 시작하는 명령어입니다.

  • -d: 이 옵션은 'detached mode' 또는 'background mode'라고 불리며, 컨테이너를 백그라운드에서 실행하고 컨테이너 ID를 출력합니다.

  • -p 8000:8080: 호스트 시스템의 포트 8000을 컨테이너의 포트 8080에 바인딩합니다. 이렇게 하면 호스트 시스템에서 접근 가능한 서비스를 제공할 수 있습니다.

  • -v /jenkins:/var/jenkins_home: 호스트 시스템의 /jenkins 디렉터리와 컨테이너 내부의 /var/jenkins_home 디렉터리를 연결(volumes)합니다. 즉, 데이터가 호스트와 컨테이너 사이에 공유됩니다.

  • -v /var/run/docker.sock:/var/run/docker.sock: 도커 소켓 파일인 /var/run/docker.sock을 컨테이너 내부와 연결합니다. 이는 Jenkins가 도커 CLI 명령어에 액세스하여 다른 도커 이미지나 컨테이너 등을 관리할 수 있게 해줍니다.

  • --name jenkins: 생성되는 Docker 컨테이너 이름을 "jenkins"로 설정합니다.

  • -u root: Jenkins 프로세스가 root 사용자로 실행되도록 합니다.

  • jenkins/jenkins:lts: Docker Hub에서 가져올 이미지 이름입니다. 여기서는 LTS(Long Term Support) 버전의 Jenkins 이미지를 가져오게 됩니다.

따라서 전체적으로 본다면, 위의 명령은 "root 권한으로 Jenkins LTS 버전 이미지를 기반으로 한 Docker 컨테이너를 백그라운드에서 실행하며, 호스트의 8000 포트와 컨테이너의 8080 포트를 연결하고, /jenkins 디렉터리와 Docker 소켓을 컨테이너에 마운트하며, 컨테이너 이름을 'jenkins'로 설정한다"라는 의미이다.


docker ps # 실행되고 있는 컨테이너 목록

docker ps -a # 실행되고 있지 않는 컨테이너도 포함한 목록

👉 jenkins 접속

접속 주소는 AWS 인스턴스 IPv4:jenkins 포트번호(8000) 이다. IPv4:PORT

최초로 접속 시 요구하는 패스워드가 존재한다.

위에서 요구하는 패스워드는 도커 컨테이너 안에 특정파일 안에 존재한다.

# docker의 jenkins 컨테이너로 접속하여 /var/jenkins_home/secrets/initialAdminPassword 읽기
$ docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword 

Install suggested plugins 선택하여 플러그인을 설치한다.

Admin 계정을 생성한다. (까먹지 않도록 유의 !!)

Jenkins URL이 ec2 인스턴스의 퍼블릭 IPv4:PORT와 동일한지 확인 한 뒤 Save and Finish를 선택한다.

위와 같은 화면이 나왔다면 성공한 것이다.




🔎 Docker 명령어

docker start [컨테이너ID or 컨테이너Name] # 컨테이너 실행
 
docker stop [컨테이너ID or 컨테이너Name] # 컨테이너 중지
 
docker rm [컨테이너ID or 컨테이너Name] # 컨테이너 삭제




다음엔 GitHub Webhook을 이용하여 RepositoryJenkins와 연결 후 push가 감지되면 자동으로 build 될 수 있게 설정해 볼 것이다.

profile
서버 백엔드 개발자

0개의 댓글