CICD 하면 빼놓을 수 없는 Jenkins를 도커로 설치해보겠습니다
Jenkins 공식 홈페이지에 가면 OS별 설치 가이드와 docker, k8s 설치 가이드를 지원합니다
여러 설치 방법 중 docker를 선택하면 장점은
- 잦은 개발 서버 재부팅
- Dockerfile, run 옵션 등으로 몇 가지 세팅 가능
- 개발 서버에 여러 서비스가 동작하므로 환경 구분
등이 있습니다
Jenkins 서버 도커 설치 가이드: https://www.jenkins.io/doc/book/installing/docker/
Docker
If you have some experience with Docker and you wish or need to access your Docker container through a terminal/command prompt using the docker exec command, you can add an option like --name jenkins-tutorial to the docker exec command. That will access th
www.jenkins.io
설치 방식
Jenkins는 두 개의 docker container를 필요로 합니다
하나는 Jenkins 서버 컨테이너이고 나머지 하나는 dind 컨테이너입니다
dind란 "docker in docker"의 줄임말입니다
Jenkins는 docker image를 build 하여 DockerHub에 push를 하거나 run 하는 기능을 지원합니다
이 기능을 위해 Jenkins docker container 안에 docker를 설치해야 합니다
일반적으로 docker container 안에 docker를 설치하는 것은 권장되지 않습니다
하지만 Jenkins처럼 이런 상황을 필요로 하는 서비스를 위해 docker hub official image로 "dind"를 지원합니다
dind image: https://hub.docker.com/_/docker
Docker - Official Image | Docker Hub
We and third parties use cookies or similar technologies ("Cookies") as described below to collect and process personal data, such as your IP address or browser information. You can learn more about how this site uses Cookies by reading our privacy policy
hub.docker.com
설치 방법
Jenkins 설치 가이드에 나온 dind 이미지를 run 하는 명령어가 나와있습니다
개발 서버가 재부팅될 때마다 편하게 run 하기 위해서 쉘 파일로 만들어둡시다
11번째 줄을 보시면 2376번 포트로 docker container 안에 docker를 사용할 수 있게 되어있습니다
잘 동작하는 것 같군요 :)
이제 본격적으로 Jenkins 서버를 위한 Dockerfile을 작성해봅시다
이것도 공식 설치 가이드에서 긁어오면 됩니다
build와 run은 각각 다음과 같이 하면 됩니다
6번째 줄을 보면 dind container로부터 docker를 이용함을 확인할 수 있습니다
잘 설치가 된 것 같으니, 브라우저로 확인해봅시다
사실 이 화면은 제가 한 번 설치를 끝냈었기에 뜨는 화면입니다
진짜 처음 설치를 하신다면 몇 가지 절차를 더 거쳐야 합니다
- initial admin password
- plugin 설치
- 초기 계정 생성
설치 가이드를 보고 차근차근 따라 하신다면 충분히 하실 수 있을 겁니다
ㅆㄱㄴ ㅎㅇㅌ:)