ubuntu 장비에서 진행했고,


master만 jenkins-docker를 사용하고, slave는 간단하게 기존처럼 실행(java 설치, 디폴트 디렉토리는 /var/lib/jenkins)가 되도록 했다.


jenkins master 장비에 docker를 실행할 때 최신 docker 18.06.ce 버전을 사용했고,


2.141 버전을 사용했다.


jenkins dockerfile은 https://github.com/jenkinsci/docker/blob/master/Dockerfile 에 있고,





< 주의 사항>


1. 백업은 필수 


docker가 죽어도 파일 시스템은 살아야 하니, 호스트 장비에 파일 시스템을 두었다. credentials이나 ssh, slave 설정, 추가 플러그인은 호스트 장비에 두어야 마음이 편할 것이다. (하지만 항상 백업하는 것이 중요하다. 자칫 잘못하면 도커 볼륨에 연결된 파일들이 모두 초기화될 수 있다) 


docker rm container_id 커맨드가 대표적이다.



2. jenkins-docker의 내부 홈 디렉토리는 /var/jenkins_home 이다.



3. docker volume 설정을 잘 적용한다.

ssh 설정, jenkins 홈 디렉토리를 docker외부에서 접근할 수 있도록 한다.


 -v  /home/www/.ssh/:/var/jenkins_home/.ssh




예를 들어 여러 개의 docker volumne을 설정하고 싶을 수 있다. 

ssh 설정은 docker host의 ssh 설정을 사용하고, docker의 timezone을 docker host의 timzezone 설정을 사용하도록 하고 jenkins 홈 디렉토리를 docker host의 디렉토리를 가르키게 하려면 다음을 실행한다.


sudo docker run --name google-jenkins-master -d  -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime -v /var/lib/jenkins:/var/jenkins_home -v  /home/www/.ssh/:/var/jenkins_home/.ssh -p 8080:8080 hub/google-jenkins-docker






4. 기본 계정은 Dockerfile에서 정의한다.

dockerfile 생성할 때 ADMIN_USERNAME, ADMIN_PASSWORD가 기본 패스워드이다. 


ENV JAVA_OPTS="-Djenkins.install.runSetupWizard=false" \

    ADMIN_USERNAME="google" \

    ADMIN_PASSWORD="google" \

...




5. 참고할 만한 dockerfile 설정은 다음과 같다. 



ENV JENKINS_FOLDER /usr/share/jenkins

USER ROOT


COPY plugins.txt "${JENKINS_FOLDER}/ref/plugins.txt"

COPY setupSecurity.groovy "${JENKINS_FOLDER}/ref/init.groovy.d/setupSecurity.groovy"

COPY setupProxy.groovy "${JENKINS_FOLDER}/ref/init.groovy.d/setupProxy.groovy"

COPY executors.groovy "${JENKINS_FOLDER}/ref/init.groovy.d/executors.groovy"

RUN /usr/local/bin/install-plugins.sh < "${JENKINS_FOLDER}/ref/plugins.txt"



6. 플러그인 추려내기

아래를 참조해서 잘 알아낸다. 실제 알고 있던 플러그인 이름이 plugins.txt 파일의 이름과 정확히 매칭되지 않으니.. 좀 시도해야 봐야 감이 잡힌다.

https://github.com/fabric8io/jenkins-docker/blob/master/plugins.txt



7.시작할 때 다음 url을 참고한다. 


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

Posted by 김용환 '김용환'