Ubuntu 18.04.5 LTS에서 Docker를 사용해 Jenkins를 띄우려 한다.

 

준비물은 dockerhub 계정.

 

1. 패키지 정보 업데이트

sudo apt-get update

 

2. 도커 설치

curl -fsSL https://get.docker.com/ | sudo sh

Ubuntu의 경우 Docker에서 제공해주는 스크립트로 편하게 설치 할 수 있다.

 

3. 사용자 계정을 docker 그룹에 추가

sudo usermod -aG docker ${계정}

 

 

4. dockerhub에 로그인

docker login [URL]

URL을 생략하게 된다면 기본적으로 dockerhub에 로그인하게 된다.

계정이 준비되어있지 않다면 hub.docker.com 에서 계정을 생성하자.

 

 

이상으로 docker 설치가 완료되었다. docker -v 등의 명령어로 도커가 설치되었나 확인해보자.

 

5. Jenkins 이미지 다운로드

원래 docker pull 명령어를 실행했을때 local에 image가 없으면 docker pull로 가져온다.

하지만 docker 20.10.1, Ubuntu 18.04.5 버전에서 manifest unknown에러가 발생하기 때문에 수동으로 젠킨스 이미지를 받아야 했다.

hub.docker.com/_/jenkins?tab=tags&page=1&ordering=last_updated

 

jenkins Tags - Docker Hub

 

hub.docker.com

위 링크에서 Docker Hub Repository에 있는 최신 도커 이미지를 확인 할 수 있다.

docker pull jenkins:2.60.3

 

6. Host와 컨테이너간 파일 공유를 위한 디렉토리를 생성해야 한다.

mkdir jenkins
mkdir jenkins/jenkins_home

 

7. jenkins 컨테이너를 실행한다.

docker run -d -p 8080:8080 -p 50000:50000 -v $PWD/jenkins/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock --name jenkins jenkins/jenkins

포트정보와 jenkins setting이 저장될 볼륨은 원하는대로 세팅해도 좋다.

jenkins 컨테이너가 docker 컨테이너를 띄우게 해야 함으로 docker.sock파일도 볼륨으로 지정해준다.

 

-d
Detached Mode. 컨테이너가 백그라운드로 실행된다.

--name ["이름"]
컨테이너의 이름을 설정한다.

-v
데이터 볼륨을 설정한다. host와 공유할 디렉토리를 설정하여 파일을 컨테이너에 저장하지 않고 호스트에 바로 저장한다.

 

-p

컨테이너의 포트를 호스트의 특정 포트와 연결한다. [호스트포트]:[컨테이너포트]

컨테이너 포트만 입력하면 호스트의 포트가 무작위로 연결된다.

 

Jenkins의 Initial Password를 확인해야 한다.

jenkins_home의 공유디렉토리를 설정해주었으니 ./jenkins/jenkins_home/secrets/initialAdminPassword 파일을 통해 확인 할 수 있다.

 

7-1. KST 시간대 설정

dockerhub에서 제공하는 jenkins는 기본적으로 UST 시간대로 설정이 되어 있기 때문에 이것을 KST로 바꿔줬다.

docker exec -itu 0 jenkins /bin/bash
ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

컨테이너 내에서 'sudo'를 지원하지 않음으로 root유저(0)로 바쉘을 실행한다.

이후 시간대의 링크를 바꿔준 후 date 명령어로 시간대를 확인하면 바뀐것을 알 수 있다.

 

 

8. jenkins 버전 업데이트

애석하게도 dockerhub에서 제공해준 최신 이미지 2.60.3버전에서는 젠킨스 플러그인을 멀쩡하게 사용 할 수 없다.

2.164.3 버전 이상을 요구하니 jenkins를 업데이트해야 한다.

 

mirrors.jenkins-ci.org/

 

Jenkins mirrors

 

mirrors.jenkins-ci.org

위 Jenkins mirrors 페이지에서 최신 jenkins버전을 확인 할 수 있다.

그 중 war-stable의 최신버전인 2.263.1버전으로 해야겠다.

 

root 권한을 이용해 bash을 열자

wget http://updates.jenkins-ci.org/download/war/2.263.1/jenkins.war
mv ./jenkins.war /usr/share/jenkins/
chown jenkins:jenkins /usr/share/jenkins/jenkins.war

 

이후 컨테이너를 restart한다.

 

8. 젠킨스 설정

드디어 docker 컨테이너가 running중인 서버 8081포트로 접속하여 7번과정에서 확인한 initialPassword로 진행하면 된다.

728x90
반응형

+ Recent posts