1. 개요
젠킨스와 같이 CI/CD 툴을 컨테이너에 설치하고 젠킨스에서 프로젝트를 생성하고, 프로젝트에서 컨테이너를 관리하는 환경을 구축하고 싶을 때 도커 인 도커라고 불리우는 방법을 사용해서 구축합니다.
컨테이너는 독립된 환경인데, 컨테이너에 설치된 젠킨스가 컨테이너들을 관리하려면 도커 볼륨을 연동해서 아래와 같은 느낌으로 구성해줍니다.
컨테이너에 젠킨스를 설치할 때
'/var/run/docker.sock:/var/run/docker.sock'
볼륨에 위와 같은 옵션을 주어서 호스트와 컨테이너가 같은 장소를 공유할 수 있도록 해줍니다.
2. 도커 인 도커 구성
도커 인 도커를 구성하는 방법은 간단합니다.
여러가지 요구되는 옵션이나 dependency가 많기는 하지만, 컨테이너에 젠킨스를 설치할 때 Dockerfile과 docker-compose를 이용하면 간단하게 설치할 수 있습니다.
저는 AWS의 EC2 인스턴스 환경에서 설치했고, 운영체제는 Linux입니다.
이미 운영체제에 도커가 설치되어 있다는 가정하에 진행합니다.
만약 AWS EC2를 사용하는데 도커가 설치가 안되어 있다면 위의 포스트를 참고하시면 됩니다.
# Dockerfile
FROM jenkins/jenkins:lts
USER root
# docker 설치
RUN apt-get update && \
apt-get -y install apt-transport-https \
ca-certificates \
curl \
gnupg2 \
zip \
unzip \
software-properties-common && \
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg > /tmp/dkey; apt-key add /tmp/dkey && \
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
$(lsb_release -cs) \
stable" && \
apt-get update && \
apt-get -y install docker-ce
# docker-compose 설치
RUN curl -L "https://github.com/docker/compose/releases/download/1.28.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && \
chmod +x /usr/local/bin/docker-compose && \
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# docker-compose.yml
version: '3.7'
services:
jenkins:
build:
context: .
dockerfile: Dockerfile
container_name: 'jenkins_docker'
restart: always
user: root
ports:
- '8081:8080'
- '50200:50000'
volumes:
- './jenkins_home:/var/jenkins_home'
- '/var/run/docker.sock:/var/run/docker.sock'
파일 구조는 위와 같습니다.
docker-compose up -d |
를 입력해서 도커 컴포즈를 실행시켜 젠킨스를 컨테이너에 설치해줍니다.
3. 젠킨스 테스트
위와 같이 젠킨스 설치가 되었다면 기본적인 젠킨스 초기 설정을 진행해줍니다.
새로운 item을 클릭하고
docker test라고 프로젝트를 생성해줍니다
Build - Execute Shell 을 선택
docker ps를 작성하고 저장해줍니다
build now를 선택해서 확인하면
위와 같이 컨테이너 내부에서 호스트의 docker 명령어가 실행된 것을 확인할 수 있습니다.
'Backend&Devops > Docker' 카테고리의 다른 글
[Kafka] Docker compose 설치 (0) | 2024.04.30 |
---|---|
[리눅스] docker, docker-compose 설치 (0) | 2024.02.21 |
[Docker] Docker Compose 문법 정리 (0) | 2021.12.23 |
[Dockerfile] Dockerfile express 연동하기 (0) | 2021.12.21 |
[Dockerfile] Dockerfile이란? Dockerfile 옵션 (1) | 2021.12.21 |