안녕하세요 오늘은 BESPIN GLOBAL CX실 박용현님이 작성해주신 ‘EC2 에서 Docker 로 Jenkins 설치 쉽게하기’에 대해 소개해드리고자 합니다.
목차
- Swap 메모리 설정
- EC2 에 Docker 설치
- Docker 서비스 실행
- Docker User 권한 설정
- Jenkins 설치
- Jenkins 접속
- Docker 명령어
1. Swap 메모리 설정
프리티어 기준 EC2 메모리는 1GB입니다. 따라서 서버가 뻗어버릴 수도 있고, 성능에도 문제가 생길 수 있기 때문에, Swap 메모리를 확보하는게 좋습니다
1.1. Swap 메모리 상태 확인
free 또는 free -h
1.2. Swap 메모리 확보
1.2.1. Swap 파일 생성
sudo dd if=/dev/zero of=/swapfile bs=128M count=16
- 명령에서 bs는 블록 크기이고 count는 블록 수입니다.
- dd 명령을 사용하여 root 파일 시스템에 swap file을 생성합니다.
일반적으로 2GB를 증설시키며, 이 명령어도 동일하게 작동합니다. (128MB x 16 = 2048MB)
1.2.2. 생성된 Swap 파일 권한 부여
sudo chmod 600 /swapfile
1.2.3. Linux 스왑 영역 설정
sudo mkswap /swapfile
1.2.4. 스왑 공간에 스왑 파일을 추가하여 사용
sudo swapon /swapfile
1.2.5. 작업 성공 확인
sudo swapon -s
1.2.6. 부팅 시 Swap 파일 활성화
sudo vi /etc/fstab
1.2.7. 마지막 줄에 아래 내용 추가
/swapfile swap swap defaults 0 0
1.3. Swap 메모리 확인

2. EC2 에 Docker 설치

3. Docker 서비스 실행

4. Docker User 권한 설정

5. Jenkins 설치

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 # 실행되고 있지 않는 컨테이너도 포함한 목록
6. 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를 선택합니다.

위와 같은 화면이 나왔다면 성공입니다.
7. Docker 명령어
docker start [컨테이너ID or 컨테이너Name] # 컨테이너 실행
docker stop [컨테이너ID or 컨테이너Name] # 컨테이너 중지
docker rm [컨테이너ID or 컨테이너Name] # 컨테이너 삭제
여기까지 ‘EC2 에서 Docker 로 Jenkins 설치 쉽게하기’에 대해 소개해드렸습니다. 유익한 정보가 되셨길 바랍니다. 감사합니다.
Written by 박 용현 / CX실
BESPIN GLOBAL