본문 바로가기
Infra/Docker

[Docker] AWS EC2(Red Hat Linux)에서 Jenkins 컨테이너 실행하기

by dbjh 2021. 1. 17.
반응형

이번 글에서는 Docker로 Jenkins 이미지를 다운로드받아서 Container로 띄우는 과정을 알아보도록하자.

출처 : 구글검색

 

1. Jenkins Image 받기

젠킨스 Image 다운로드를 받는데, lts는 Long Term Support의 약자로 오랜기간 지원해주는 버전을 받는다고 알아두자.

# 젠킨스 이미지 받기
sudo docker pull jenkins/jenkins:lts

* 만약 root user 권한이 아닌 현재 유저의 권한으로 docker 명령어를 사용하려면, 해당 user가 docker를 이용할 수 있도록 설정하도록하자. root가 아닌 user로 docker 명령어를 실행하게 될 경우 아래와 같은 에러문구가 나올것이다.

권한이 없는 경우에 docker 명령어를 쓸 경우

현재 유저를 확인하고 도커 그룹에 추가하도록하자. 그런 후에 변경사항을 적용하기 위해 도커 서비스를 재시작하고, 그래도 해당 유저에 권한이 없으면 EC2에서 로그아웃하고 재접속하도록하자.

# 현재 유저 확인
echo $USER

# 현재 유저 출력결과
ec2-user

# docker 그룹에 현재 유저 추가
sudo usermod -aG docker $USER

# docker 재실행
sudo service docker restart

# 그래도 적용이 안된경우 접속해제 후 재연결
exit

 

root 권한이든 다른유저를 그룹에 추가하여 진행하였든 image 다운로드를 진행하도록하자.

jenkins image pull 결과

jenkins 이미지가 정상적으로 다운로드 됐는지 확인해보도록하자.

# docker jenkins image 확인
docker images

jenkins images 확인


 

2. docker image를 container로 띄우기

다운로드 받은 jenkins image를 docker container로 띄우도록하자.

# docker 컨테이너로 등록 후 실행
docker run -d -p 9090:8080 -v /jenkins:/var/jenkins_home --name jenkins -u root jenkins/jenkins:lts

 

위처럼 도커 컨테이너를 띄우는 명령어는 아래와 같은 규칙이 있다. 맨 마지막 명령어의 경우 image명:image태그를 나타내는데, 해당 로컬에 입력된 image가 없으면 도커허브에서 pull 하는 점을 참고하자.

-d	detached mode 흔히 말하는 백그라운드 모드
-p	호스트(앞)와 컨테이너(뒤)의 포트를 연결 (포트포워딩) 로컬 PORT: 컨테이너 PORT
-v	호스트(앞)와 컨테이너(뒤)의 디렉토리를 연결 (마운트)
-u 실행할 사용자 지정
–-name	컨테이너 이름 설정

docker container를 띄웠다면, 정상적으로 실행중인지 확인해보도록하자.

# docker container 목록 확인
docker ps -a

실행중인 docker container 확인

위의 경우, 로컬의 9090포트로 들어오는 요청을 도커엔진 위에 떠있는 jenkins 컨테이너(8080을 일반적으로 사용함)로 포트포워딩 하는데, 9090 포트로 들어오는 요청이 정상적으로 들어올 수 있게 인바운드 허용을 해줘야한다. 인바운드 허용은 아래의 글을 참고 하도록하자.

 

[AWS] 인바운드 규칙 설정하기

이번 글에서는 외부에서 AWS 인스턴스 내부의 특정포트로 접근이 가능하도록 인바운드 규칙을 설정해보자. 기본적으로 AWS EC2 인스턴스를 생성하였겠지만, 그렇지 않은 경우 아래 링크를 통해 AWS

dbjh.tistory.com

 

 


3. Jenkins 접속하기

여기까지 완료되었다면 Jenkins페이지로 접속해보도록하자. 위에서 로컬포트를 9090으로 실행하였기 때문에 [host ip:port]로 접속하면된다.

jenkins 초기 비밀번호 입력페이지

위처럼 페이지가 정상적으로 나오는것을 확인할 수 있다. 그렇다면 위의 패스워드는 어디서 알아내야지? 라는 생각이 들것이다.
해당 패스워드는 현재 docker 컨테이너로 떠있는 jenkins의 특정파일안에 있다. 

# docker의 jenkins 컨테이너로 접속하여 패스워드 파일 읽기
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword

이때 사용하는 docker exec 명령어는 컨테이너로 접속하는 명령어라고 알아두자. 

만약 도커 컨테이너 내부로 접속하고 싶다면 아래의 명령어로 접속하도록 하자.

# 도커 컨테이너 내부로 접속
docker exec -it  도커컨테이너ID /bin/bash

# example
docker exec -it  6832359260fd /bin/bash

 

패스워드를 알아냈으면 복사하여 해당 칸에 입력한 후 Continue 버튼을 클릭하도록 하자.

Jenkins Dashboard

젠킨스 대시보드가 정상적으로 노출된것을 확인할 수 있다.

참조

 

Docker를 통한 젠킨스(Jenkins) 설치하기. · 기억하기 위한 개발노트

Docker를 통한 젠킨스(Jenkins) 설치하기. 25 Feb 2019 | Docker Jenkins 도커가 설치되어 있다고 가정한다. 1. Jenkins 이미지 내려 받기 Docker Hub 에서 Jenkins 이미지를 내려받을 수 있다. Docker Hub이란? 도커 이미

jmlim.github.io

 

반응형

댓글