앞 포스트에서는 도커 컴포즈가 무엇이고 어떻게 스크립트를 작성하는지 알아봤습니다. 도커 컴포즈에 대해서 잘 모르겠다 싶으시면 앞의 포스트를 확인해주세요. https://junlab.tistory.com/219
이번 포스트에서는 도커 컴포즈를 활용하여 젠킨스를 구동하도록 하겠습니다.
젠킨스 구동을 위해서 스크립트를 하나 만들어주세요.
1. docker-compose.yml
version: "3"
services:
master:
container_name: master
image: jenkinsci/jenkins:2.150.1-slim
ports:
- 8080:8080
volumes:
- ./jenkins_home:/var/jenkinse_home
앞전의 기본 스크립트에서 못 본 volumes가 있습니다.
volumes
호스트의 jenkine_home 디렉터리를 젠킨스 컨테이너의 /var/jenkinse_home에 공유할 수 있는 구문입니다.
Dockerfile의 COPY 명령어는 복사기능이지만, docker-compose volumes는 공유를 합니다.
명령어를 통해서 컨테이너를 구동하겠습니다.
docker-compose pull
docker-compose up
2. localhost:8080 접속
컨테이너 설치 중 스크립트를 보시게 되면 다음과 같은 모습이 있습니다.
중간에 패스워드가 존재하는데 패스워드를 복사하여 입력해주세요
다음으로 Install suggested plugins를 클릭하여 젠킨스 설치를 진행해주세요.
위의 설치 화면이 끝나고 설치가 완료되지 않은 패키지 항목이 존재한다고 합니다.
그럼 Retry를 누르지 않고 그냥 설치를 진행해주시면 아래의 완료된 모습을 보실 수 있습니다.
3. 슬레이브 젠킨스 컨테이너 생성
젠킨스를 사용할 때는 흔히, 2개의 서버로 운영을 합니다.
마스터 : 관리기능이나 작업 실행 지시
슬레이브 : 작업을 실제로 진행
마스터가 슬레이브와 데이터를 주고받을 수 있도록 ssh 키를 생성하겠습니다.
컨테이너가 실행 중인 상태에서 아래 명령어를 입력해주세요.
docker container exec -it master ssh-keygen -t rsa -C ""
docker exec -it master bash 명령어를 통해서 /var/jenkins_home/.ssh/ 경로로 이동 후 id_rsa.pub를 확인해주세요.
docker exec -it master bash
cd /var/jenkins_home/.ssh/
cat id_rsa.pub
위의 명령어를 통해서 공개키 값을 확인 후에 yml파일에 slave를 만들겠습니다.
version: "3"
services:
master:
container_name: master
image: jenkinsci/jenkins:2.150.1-slim
ports:
- 8080:8080
volumes:
- ./jenkins_home:/var/jenkinse_home
links:
- slave01
slave01:
container_name: slave01
image: jenkinsci/ssh-slave
environment:
- JENKINS_SLAVE_SSH_PUBKEY= ssh-rsa AA...
links: master에 slave01에 대한 링크를 설정했습니다. master에서 slave01이라는 이름으로 슬레이브를 찾아갈 수 있습니다.
다시 정리를 하자면
1. ssh 공개키 생성
2. 젠킨스 환경변수인 JENKINS_SLAVE_SSH_PUBKEY 추가
3. links 추가
slave컨테이너를 추가했으니 compose 명령어를 통해서 컨테이너를 구동하겠습니다.
docker-compose up -d
docker-compose ps
이상으로 master와 slave 컨테이너 2개가 정상적으로 생성된 모습을 보실 수 있습니다.
도커 컴 포즈 및 젠킨스 세팅 방법을 학습했으니 필요에 따라서 젠킨스 학습을 더욱 진행을 했으면 좋겠습니다.
감사합니다.
'Programming > System' 카테고리의 다른 글
[docker] 도커 에러 /var/run/docker.sockconnect: permission denied (0) | 2021.04.15 |
---|---|
[docker] 도커 실행 중인 전체 컨테이너 중지, 일괄 삭제 (prune) (0) | 2020.08.02 |
[docker] 도커 컴포즈란? 예제 및 기본 사용법 (docker-compose) (0) | 2020.06.11 |
[docker] 도커 사용 이유, 심플 예제 및 구동 (기본 사용법) (0) | 2020.05.25 |
system에러 - Unable to fetch some archives, maybe run apt-get update... (0) | 2020.04.17 |