Docker | Jenkins 설치

DoItDev·2021년 9월 20일
0
post-thumbnail
post-custom-banner

Jenkins

Note:

  • 젠킨스(Jenkins)는 소프트웨어 개발 시 지속적 통합(continuous integration) 서비스를 제공하는 툴이다.
  • 다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유 영역에 있는 Git등의 저장소에 빈번히 업로드함으로써 지속적 통합이 가능하도록 해 준다. MIT 라이선스를 따른다.

참조


Docker을 이용한 Jenkins 설치

도커를 이용해서 설치를 하기위해서는 일단 도커허브에 젠킨스 관련 이미지가 있는지
검색을 해봐야 한다.

docker search jenkins

검색 후 에 우리가 사용할 선택을 해준다.
하지만 이번 포스팅에서는 jenkins/jenkins:lts 이미지를 사용하려고 한다.
pull을 받아보자

docker pull jenkins/jenkins:lts
스크린샷 2021-09-20 오후 4 54 42

pull을 받았으면 한번 확인을 해주어야 된다.
물론 확인을 안해도 무방하다.

docker images 
스크린샷 2021-09-20 오후 4 55 05

이미지 확인이 끝났다면 다음은 이미지를 컨테이너로 올리려고 한다.
아래의 명령어로 올리면 된다.
포트 설정이나 이름 그리고 볼륨의 경우 입맛에 따라 사용을 하면된다.

docker run -d -p 8181:8080 -v /jenkins:/var/jenkins_home --name jm_jenkins -u root jenkins/jenkins:lts

간단한 도커 옵션에 대한 설명이다.

-d 백그라운드 모드 옵션

-p 포트 연결 

xxxx:yyyy 여기서 앞서 사용하는 포트가 우리가 서버에서 사용할 포트이며
뒤에서의 yyyy의 경우 컨테이너에서 나오는 포트이다.

-v 디렉토리 연결

컨테이너와 현재 우리가 사용할 디텍토리를 연결해준다. 컨테이너에서 디렉토리가 변경이되면 
연결되어 있는 사용하는 디렉토리에서 변경이되며 반대의 경우도 성립이된다.

-name 컨테이너 이름/알리야스

-u 실행할 사용자 지정

컨테이너에 들어갈시 사용자 지정 root/jenkins 기타.. 가있다.
스크린샷 2021-09-20 오후 4 55 24

그 다음으로 이제 브라우저로 가서 진행을 하려고 한다.

우리가 설정을 했던 포트로 브라우저에서 실행을 하면된다.

그러면 아래와 같이 비밀번호를 넣어달라고 하는데

기존에 젠킨스의 경우 폴더에 입력이 되어있다.

스크린샷 2021-09-20 오후 5 26 50

하지만 이번 포스트의 경우 도커로 이용을 하기 때문에 컨테이너에 들어가서 폴더에 들어가서 이런 작업을 한는게 아닌 docker logs 을 이용하려고 한다.

docker logs [컨테이너ID]

그러면 아래와 같이 나오는데 로그를 잘 살펴보면 패스워드가 적혀있다.

그것을 넣어주면 된다.

스크린샷 2021-09-20 오후 5 13 12

이 후에 아래와 같은 화면이 나오는데 왼쪽 버튼을 눌러주면 된다.

스크린샷 2021-09-20 오후 5 26 54

그러면 자동으로 인스톨며 후에 아이디와 패스워드를 설정을 하면 마무리가 된다.

스크린샷 2021-09-20 오후 5 31 52

jenkins docker 이미지로 올릴시 문제

Q1. 도커 이미지로 올릴 시 docker 로 올린 jeknins 의 경우 jeknis 에 도커가 없다면
젠킨스 내에 도커를 사용을 하지 못한다.

A1. 젠킨슨 컨테이너에 도커가 없기 때문에 여러가지 방법을 선택이 가능하다.
일단

  • 젠킨스 컨테이너 내에서 직접 들어가서 젠킨슨을 설치를 해준다.
  • 기존에 루트 서버에 있는 도커 와 젠킨스 컨테이너간의 볼륨을 잡아준다.
  • 도커가 내장되어있는 이미지를 찾아서 사용을 한다.

기존에 볼륨을 아래와 같이 추가를 해주면 도커가 정상적으로 젠킨스내에 작동이된다.

-v /var/run/docker.sock:/var/run/docker.sock 
-v /usr/bin/docker:/usr/bin/docker

Q2. 젠킨슨내에서 도커명령어로 구성을 하였을때 libltdl.so.7 error 가 발생이 된다.

docker: error while loading shared libraries: /usr/lib/x86_64-linux-gnu/libltdl.so.7: cannot read file data: Error 21

A2. 이 경우에 루트 서버에서 dockerfile을 만들어서 해결을 해주었다.

아래와 같이 도커 파일을 만들어서 새로 빌드해서 사용을 했다.

FROM jenkins/jenkins:latest

USER root

RUN apt-get update \
          && apt-get upgrade -y \
          && apt-get install -y sudo libltdl-dev libnss3 \
          && rm -rf /var/lib/apt/lists/*
RUN echo "jenkins ALL=NOPASSWD: ALL" >> /etc/sudoers

USER jenkins

아래와 같은 명령어로 새로 젠킨스 컨테이너를 실행을 해주면 해결이 가능하다.

docker build -t doc_indoc .

docker run --name jenkins -d -p 8080:8080 -p 50000:50000 -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):$(which docker) doc_indoc
profile
Back-End Engineer
post-custom-banner

0개의 댓글