기은P
시간이 멈추는 장소
기은P
  • Programming (272)
    • 개발노트 (1)
    • FrontEnd (56)
      • ES&JS 문법 (14)
      • HTML&CSS (4)
      • React 기본 (18)
      • React 심화 (12)
      • React 이슈 (2)
      • Project 연습 (1)
      • Next.js (5)
    • Backend&Devops (33)
      • AWS (2)
      • Docker (9)
      • Jenkins (6)
      • Nginx (6)
      • Node.js (1)
      • ElasticSearch (5)
      • 프레임워크&아키텍처 (2)
      • 암호화 (0)
      • 기타 (2)
    • 알고리즘 (3)
    • C# (8)
      • WPF (8)
    • Java (51)
      • 순수 Java (18)
      • RDF&Jena (12)
      • RCP&GEF (9)
      • JMX (5)
      • JMapper (3)
      • 오류해결 (4)
    • Database (21)
      • RDBMS (9)
      • NoSQL (2)
      • TSDB (1)
      • GraphQL (1)
      • Hibernate (3)
      • 데이터베이스 이론 (4)
      • Redis (1)
    • 프로토콜 (11)
      • Netty (4)
      • gRPC (5)
      • 프로토콜 개념 (2)
    • Server (4)
      • Linux (4)
    • 2020 정보처리기사 필기 (43)
      • 목차 (1)
      • 기출문제 (1)
      • 1과목 - 소프트웨어 설계 (6)
      • 2과목 - 소프트웨어 개발 (7)
      • 3과목 - 데이터베이스 구축 (8)
      • 4과목 - 프로그래밍 언어 활용 (7)
      • 5과목 - 정보시스템 구축 관리 (10)
    • 2020 정보처리기사 실기 (31)
      • 목차 (4)
      • 기출예상문제 (19)
      • 실기요약 (8)
    • 빅데이터분석기사 필기 (4)
      • 목차 (0)
      • 필기 요약 (3)
    • 전기 공학 (1)
      • CIM (1)
    • 산업자동화시스템 (3)
      • SCADA (1)
      • OPC UA (2)
    • 디자인패턴 (1)
    • 휴지통 (0)

공지사항

  • 공지사항/포스팅 예정 항목

최근 댓글

최근 글

전체 방문자
오늘
어제

티스토리

hELLO · Designed By 정상우.
기은P

시간이 멈추는 장소

[Docker] 도커 안에 젠킨스 설치 (도커 인 도커, Docker In Docker, D in D)
Backend&Devops/Docker

[Docker] 도커 안에 젠킨스 설치 (도커 인 도커, Docker In Docker, D in D)

2022. 5. 6. 14:20
반응형

1. 개요

 

젠킨스와 같이 CI/CD 툴을 컨테이너에 설치하고 젠킨스에서 프로젝트를 생성하고, 프로젝트에서 컨테이너를 관리하는 환경을 구축하고 싶을 때 도커 인 도커라고 불리우는 방법을 사용해서 구축합니다.

 

컨테이너는 독립된 환경인데, 컨테이너에 설치된 젠킨스가 컨테이너들을 관리하려면 도커 볼륨을 연동해서 아래와 같은 느낌으로 구성해줍니다.

 

 

컨테이너에 젠킨스를 설치할 때

'/var/run/docker.sock:/var/run/docker.sock'

볼륨에 위와 같은 옵션을 주어서 호스트와 컨테이너가 같은 장소를 공유할 수 있도록 해줍니다.

 

 

 

2. 도커 인 도커 구성

도커 인 도커를 구성하는 방법은 간단합니다.

여러가지 요구되는 옵션이나 dependency가 많기는 하지만, 컨테이너에 젠킨스를 설치할 때 Dockerfile과 docker-compose를 이용하면 간단하게 설치할 수 있습니다.

 

저는 AWS의 EC2 인스턴스 환경에서 설치했고, 운영체제는 Linux입니다.

이미 운영체제에 도커가 설치되어 있다는 가정하에 진행합니다.

https://narup.tistory.com/223

 

[AWS] EC2 Docker, Docker-compose 설치(Linux)

AWS에서는 docker와 docker-compose를 설치하는데 기존 리눅스 방법과는 다른 방법으로 설치를 진행해서 아래 방법을 찾아 공유하려고 합니다! 도커 설치 // 도커 설치 sudo amazon-linux-extras install docker /..

narup.tistory.com

만약 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
    'Backend&Devops/Docker' 카테고리의 다른 글
    • [Kafka] Docker compose 설치
    • [리눅스] docker, docker-compose 설치
    • [Docker] Docker Compose 문법 정리
    • [Dockerfile] Dockerfile express 연동하기
    기은P
    기은P
    기은P의 블로그 일상과 개발 관련 포스팅 #React #Typescript #Next #Nest https://github.com/kimdongjang

    티스토리툴바