DevOps/CI CD

[CI/CD] Jenkins 설치하기 (Docker)

seunghwaan 2022. 5. 31. 18:05
반응형

이번 포스트에서는 Docker를 이용하여 아무런 설정이 되어있지 않은 젠킨스를 설치하는 방법을 정리하겠습니다.

프로덕트 레벨에서 Jenkins로 CI 환경을 구성하실 분들은 이 방법보다는 사용하시는 프로젝트의 빌드 환경을 구성하는 Dockerfile을 작성해서 이용하시는 것을 추천합니다.

테스트 환경

OS: Ubuntu Server 22.04 LTS (HVM)

성능: t2.micro(free tier)

만약, EC2에서 Jenkins를 설치하신다면 외부에서 Jenkins 접속을 위해서 Security group의 인바운드 규칙 설정을 통해 8080 포트를 열어주셔야 합니다.

 

Inbound rules

Jenkins 컨테이너 실행

이미지는 jenkins/jenkins 이미지의 latest 버전을 사용하여 컨테이너를 실행해주겠습니다.

아래의 명령어로 젠킨스 컨테이너를 실행해줍니다.

$ docker run -d --name jenkins --restart=on-failure \
-p 8080:8080 \
-v /var/jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-e TZ=Asia/Seoul \
-u root \
jenkins/jenkins

 

명령어의 옵션은 아래와 같습니다

--restart -> on-failure 옵션은 비정상 종료시 컨테이너를 재실행합니다.

-p -> 외부 접속을 위해 호스트의 8080 포트를 바인딩 해주었습니다.

-v -> 호스트의 var/jenkins 디렉토리를 호스트 볼륨으로 설정하여 jenkins 컨테이너의 home 디렉토리에 마운트시켰습니다.

docker.sock 파일은 도커 데몬과 통신할 수 있는 소켓 파일입니다. docker.sock 파일을 컨테이너에 마운트시켜서 도커 명령을 실행할 수 있게 해줍니다. 이러한 방식을 dood(docker out of docker)라고 합니다.

-e -> 젠킨스의 timezone을 KST 기준으로 설정해줍니다.

-u -> 추후 권한 문제가 발생할 수 있기 때문에 user 옵션을 root 사용자로 주었습니다.

 

젠킨스 컨테이너 실행

초기 비밀번호 입력

젠킨스 컨테이너를 실행했으면 http://<ip 주소>:<8080> 를 입력하여 젠킨스에 접속해줍니다.

접속하면 초기 비밀번호를 입력하라는 창이 뜹니다.

$ docker exec -it cfb /bin/bash
$ cat /var/jenkins_home/secrets/initialAdminPassword
c4e80c99109448f79fad07c6133466c8 # 초기 비밀번호

초기 비밀번호는 컨테이너의 /var/jenkins_home/secrets/initialAdminPassword에 저장되어 있습니다.

 

초기 비밀번호 입력

플러그인 설치

Install suggested plugins를 선택해줍니다. 따로 설치하고 싶은 플러그인이 있다면 추후에 설치할 수 있습니다.

 

플러그인 설치 옵션

어드민 계정 생성

어드민 계정을 생성하는 부분입니다. 빈칸을 채워서 계정을 생성해줍니다.

 

어드민 계정 생성

Jenkins URL 설정

접속할 Jenkins URL을 설정해줍니다. 

 

Jenkins URL 설정

젠킨스 설치 완료

정상적으로 설치가 완료되면 젠킨스 대시보드 화면이 나옵니다.

 

젠킨스 대시보드

References

https://github.com/jenkinsci/docker/blob/master/README.md

 

GitHub - jenkinsci/docker: Docker official jenkins repo

Docker official jenkins repo. Contribute to jenkinsci/docker development by creating an account on GitHub.

github.com

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=isc0304&logNo=222274955992 

 

도커 컨테이너 안에서 도커 실행하기(Docker in Docker, Docker Out of Docker)

이번 시간은 도커를 사용해 컨테이너에서 컨테이너를 실행하는 방법을 알아봅니다. 도커 컨테이너 내에서 ...

blog.naver.com

https://medium.com/hgmin/jenkins-docker-timezone-3bb80efad3d4

 

Jenkins를 Docker Container로 구동시 TimeZone 설정

Ubuntu 등에 시간 설정을 Asia/Seoul로 환경 설정을 해줘도 Docker Run으로 구동한 Sonarqube는 KST로 시간이 나오는데 이상하게 Jenkins는 UTC로 나와서 찾아본 내용 공유합니다.

medium.com

 

반응형