이번 게시글에서는 Jenkins의 Docker In Docker 문제를 해결하는 방법을 기술하겠다. 이미 [공부정리] Docker를 이용한 Jenkins 설치 및 CI/CD 구축에서 해결 방법을 다룬 적 있었으나, docker 컨테이너를 실행할 때마다 다시 설정해주어야 하는 점이 귀찮았기 때문에 이번에는 Docker Compose를 이용해서 자동으로 설정하는 방법에 대해서 소개하겠다.
이 구성은 Jenkins 컨테이너가 시작될 때 Docker를 자동으로 설치하도록 설정되어 있다.
FROM jenkins/jenkins:lts-jdk17
USER root
RUN apt-get update && \
apt-get -y install apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common && \
curl -fsSL get.docker.com -o get-docker.sh && \
sh get-docker.sh && \
rm get-docker.sh
RUN groupadd -f docker
RUN usermod -aG docker jenkins
USER jenkins
Dockerfile은 필요한 패키지를 설치하고 Docker 설치 스크립트를 실행하여 Docker를 설치한다.
version: '3.8'
services:
jenkins:
build:
context: .
dockerfile: Dockerfile
container_name: jenkins
environment:
- TZ=Asia/Seoul
user: root
privileged: true
ports:
- "9090:8080"
- "50000:50000"
volumes:
- ./jenkins/jenkins_home:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
hostname: jenkins
volumes:
jenkins_home:
driver: local
docker-compose.yml 파일은 Jenkins 컨테이너를 빌드하고 필요한 설정을 적용하여 Docker를 사용할 수 있도록 한다.
이 방법으로 매번 수동 설정할 필요 없이 Jenkins와 Docker를 효율적으로 사용할 수 있다.
docker compose up -d 명령어로 실행할 수 있다.
Dockerfile은 필요한 패키지를 설치하고 Docker 설치 스크립트를 실행하는 모습을 볼 수 있다. 또한 컨테이너 내부에서 docker 명령어가 잘 실행 되는 모습이다.
Jenkins에서 Docker 이미지를 빌드하고 실행할 수 있는 모습을 볼 수 있다.