파란하늘의 지식창고
반응형

현재 기준의 도커에서 jenkins를 설치하면서 해당 jenkins container에서 java 11과 docker를 사용하는 방법을 설명한다.

 

현재 jenkins의 Global Tool Configuration -> install automatically에서 Oracle JDK를 설치하는 것을 9 버전 까지만 지원하고 오라클의 라이선스 정책 변경 때문에 10 이상 버전은 더 이상 지원하지 않는다.

https://issues.jenkins-ci.org/browse/JENKINS-54305

 

수동으로 설치하는 방법도 있긴 한데 그냥 jenkins 이미지 자체를 jdk 11로 실행한 경우 별도 설정 없이 편하게 java 11을 사용할 수 있다.

개인적으로 개발할 때는 굳이 이런저런 설정 없이 편하게 사용하는 게 좋을 것 같아 java 11 버전 jenkins를 사용하려고 한다.

제공되는 jenkins, docker hub 주소

jenkins의 github는 아래와 같다.

https://github.com/jenkinsci/jenkins

이 jenkins를 docker로 올리기 위한 github은 아래와 같다.

https://github.com/jenkinsci/docker

 

docker hub의 jenkins 공식 이미지 위치는 아래와 같다.

https://hub.docker.com/_/jenkins

위 주소가 현재 Docker Official Images인데 여기의 Docker Image엔 범용적으로 쓰이는 버전에 대해서만 제공하고 있다.

아래의 주소에는 jdk11, slim, lts-slim, alpine 등 좀 더 다양한 버전의 jenkins를 사용할 수 있다.

https://hub.docker.com/r/jenkins/jenkins

 

여기의 jenkins jdk11 버전의 jenkins이미지를 사용하면 된다.

(여기 이외에 https://hub.docker.com/r/jenkins/jenkins-experimental에서 다운로드하여 사용할 수 도 있다. 취향 껏 선택하면 된다.)

jenkins jdk 11 사용하기

가장 심플하게는 아래와 같다.

sudo docker run -d --name jenkins -p 8080:8080 jenkins/jenkins:jdk11

 

jenkins container에서 docker 사용하기

jenkins docker image 내에 docker를 사용하는 방법은 2가지가 있다. dind (docker in docker)와 dood (docker out of docker) 방식이 있다.

dind는 jenkins container 내 docker와 바깥의 docker를 별도로 사용하는 것이고 dood는 외부의 docker를 내부에서 사용하는 방식이라고 한다.

개인적으로 현재 아래처럼 설정하여 사용하고 있다.

순서는 다음과 같다.

  1. jenkins/jenkins:jdk11에 docker를 설치하는 스크립트를 작성하여 Dockerfile을 작성.
  2. Dockerfile을 build.
  3. container를 생성.

개인적으로 사용하는 방법이 맞는건지 모르겠는데 docker image를 생성할 때는 dind 처럼 jenkins container에 docker를 설치 및 docker group에 jenkins 유저를 추가한 후 docker  container 생성 시 dood 처럼 외부이 docker를 연결하고 있다. (dind와 dood가 섞여 있는것 같은데 docker를 잘 몰라서 둘 중 하나만 선택해서 쓰는 방식에 대해서는 확인해보지 않앗다.)

docker의 설치 방법은 아래와 같다.

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

Dockerfile은 다음과 같다.

FROM jenkins/jenkins:jdk11
MAINTAINER bluesky <유저@이메일>

USER root
RUN curl -fsSL https://get.docker.com -o get-docker.sh \
    && sh get-docker.sh 
RUN usermod -aG docker jenkins 
USER jenkins

해당 Dockerfile을 빌드한다.

docker build --tag bluesky-jenkins:0.1 .

빌드된 이미지로 container를 생성한다.

docker run -d --name jenkins -p 8080:8080 -v /var/run/docker.sock:/var/run/docker.sock -v /data/jenkins:/var/jenkins_home -u root --privileged=true  bluesky-jenkins:0.1

 

반응형
profile

파란하늘의 지식창고

@Bluesky_

도움이 되었다면 광고를 클릭해주세요