이번 글에서는 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 명령어를 실행하게 될 경우 아래와 같은 에러문구가 나올것이다.
현재 유저를 확인하고 도커 그룹에 추가하도록하자. 그런 후에 변경사항을 적용하기 위해 도커 서비스를 재시작하고, 그래도 해당 유저에 권한이 없으면 EC2에서 로그아웃하고 재접속하도록하자.
# 현재 유저 확인
echo $USER
# 현재 유저 출력결과
ec2-user
# docker 그룹에 현재 유저 추가
sudo usermod -aG docker $USER
# docker 재실행
sudo service docker restart
# 그래도 적용이 안된경우 접속해제 후 재연결
exit
root 권한이든 다른유저를 그룹에 추가하여 진행하였든 image 다운로드를 진행하도록하자.
jenkins 이미지가 정상적으로 다운로드 됐는지 확인해보도록하자.
# docker jenkins image 확인
docker 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
위의 경우, 로컬의 9090포트로 들어오는 요청을 도커엔진 위에 떠있는 jenkins 컨테이너(8080을 일반적으로 사용함)로 포트포워딩 하는데, 9090 포트로 들어오는 요청이 정상적으로 들어올 수 있게 인바운드 허용을 해줘야한다. 인바운드 허용은 아래의 글을 참고 하도록하자.
3. Jenkins 접속하기
여기까지 완료되었다면 Jenkins페이지로 접속해보도록하자. 위에서 로컬포트를 9090으로 실행하였기 때문에 [host ip:port]로 접속하면된다.
위처럼 페이지가 정상적으로 나오는것을 확인할 수 있다. 그렇다면 위의 패스워드는 어디서 알아내야지? 라는 생각이 들것이다.
해당 패스워드는 현재 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 버튼을 클릭하도록 하자.
젠킨스 대시보드가 정상적으로 노출된것을 확인할 수 있다.
참조
'Infra > Docker' 카테고리의 다른 글
[Docker] Centos에서 MySQL을 도커 컨테이너로 실행하기 (0) | 2021.03.13 |
---|---|
[Docker] AWS EC2(Red Hat Linux)에 Docker설치 (0) | 2021.01.16 |
[Docker] Docker Hub에 이미지 올리기 (0) | 2019.12.17 |
[Docker] Docker로 Spring Boot 배포하기 (0) | 2019.12.08 |
[Docker] Dockerfile 명령어 정리 (0) | 2019.12.02 |
댓글