병훈's Blog

Jenkins와 도커 본문

IT 용어 정리

Jenkins와 도커

thdqudgns 2023. 6. 27. 02:39

https://www.jenkins.io/doc/

 

Jenkins User Documentation

Jenkins is a self-contained, open source automation server which can be used to automate all sorts of tasks related to building, testing, and delivering or deploying software. Jenkins can be installed through native system packages, Docker, or even run sta

www.jenkins.io

 

젠킨스의 공식문서 사이트다. 하나하나 알아가보자.

 

젠킨스란?

Jenkins는 소프트웨어 구축, 테스트, 제공 또는 배포와 관련된 모든 종류의 작업을 자동화하는 데 사용하는
독립형 오픈 소스 자동화 서버입니다.

Jenkins는 기본 시스템 패키지, Docker를 통해 설치하거나 JRE(Java Runtime Environment)가 설치된 시스템에서
독립 실행형으로 실행할 수도 있습니다.

젠킨스 설치 

Jenkins는 일반적으로 자체 프로세스에서 독립 실행형 애플리케이션으로 실행됩니다. Jenkins WAR 파일은 Jetty 서블릿 컨테이너 래퍼인 Winstone을 번들로 제공하며 Jenkins 에서 지원하는 Java 버전이 있는 모든 운영 체제 또는 플랫폼에서 시작할 수 있습니다.

이론적으로 Jenkins는 Apache Tomcat 또는 WildFly 와 같은 기존 서블릿 컨테이너에서 서블릿으로도 실행될 수 있지만 실제로는 대부분 테스트되지 않았으며 많은 주의 사항이 있습니다. 특히 WebSocket 에이전트에 대한 지원은 Jetty 서블릿 컨테이너에 대해서만 구현됩니다. 자세한 내용은 서블릿 컨테이너 지원 정책 페이지를 참조하십시오 .


도커

Docker는 "컨테이너"(또는 Docker 컨테이너)라는 격리된 환경에서 애플리케이션을 실행하기 위한 플랫폼입니다. Jenkins와 같은 애플리케이션은 읽기 전용 "이미지"(또는 Docker 이미지)로 다운로드할 수 있으며 각 이미지는 Docker에서 컨테이너로 실행됩니다. Docker 컨테이너는 실제로 Docker 이미지의 "실행 중인 인스턴스"입니다. 이러한 관점에서 이미지는 어느 정도 영구적으로 저장되는 반면(즉, 이미지 업데이트가 게시되는 한) 컨테이너는 임시로 저장됩니다. Docker 설명서의 시작하기, 파트 1: 오리엔테이션 및 설정 페이지에서 이러한 개념에 대해 자세히 읽어보십시오.

Docker의 기본 플랫폼 및 컨테이너 설계는 단일 Docker 이미지(Jenkins와 같은 특정 애플리케이션용)가 지원되는 모든 운영 체제(macOS, Linux 및 Windows) 또는 Docker를 실행하는 클라우드 서비스(AWS 및 Azure)에서 실행될 수 있음을 의미합니다.

도커 설치

대체 솔루션으로 Dockerhub를 방문하여 운영 체제 또는 클라우드 서비스에 적합한 Docker Community Edition을 선택할 수 있습니다. 해당 웹 사이트의 설치 지침을 따르십시오.

Linux 기반 운영 체제에 Docker를 설치하는 경우 루트가 아닌 사용자로 관리할 수 있도록 Docker를 구성해야 합니다. 이에 대한 자세한 내용은 설명서의 Linux용 Docker 설치 후 단계 페이지를 참조하십시오. 이 페이지에는 부팅 시 시작되도록 Docker를 구성하는 방법에 대한 정보도 포함되어 있습니다.

 

전제 조건

최소 하드웨어 요구 사항:

  • 256MB RAM
  • 1GB의 드라이브 공간(Jenkins를 Docker 컨테이너로 실행하는 경우 최소 10GB가 권장됨)

소규모 팀을 위한 권장 하드웨어 구성:

  • 4GB 이상의 RAM
  • 50GB 이상의 드라이브 공간

포괄적인 하드웨어 권장 사항:

소프트웨어 요구 사항:

Docker에서 Jenkins 다운로드 및 실행

사용 가능한 Jenkins의 여러 Docker 이미지가 있습니다.

사용할 권장 Docker 이미지는 공식 jenkins/jenkins이미지 ( Docker Hub 리포지토리 에서 제공 )입니다. 이 이미지에는 Jenkins의 현재 장기 지원(LTS) 릴리스 (프로덕션 준비 완료)가 포함되어 있습니다. 그러나 이 이미지에는 내부에 docker CLI가 없으며 자주 사용되는 Blue Ocean 플러그인 및 기능이 번들로 제공되지 않습니다. 즉, Jenkins 및 Docker의 모든 기능을 사용하려는 경우 아래에 설명된 설치 프로세스를 수행할 수 있습니다.

jenkins/jenkinsJenkins Docker의 새 릴리스가 게시될 때마다 새 이미지가 게시됩니다. 태그

jenkins/jenkins 페이지 에서 이전에 게시된 이미지 버전 목록을 볼 수 있습니다.

 

macOS 및 Linux에서

터미널 창을 엽니다.

다음 명령을 사용하여 Docker에서 브리지 네트워크를 만듭니다 docker network create .

docker network create jenkins
 

Jenkins 노드 내에서 Docker 명령을 실행하려면 docker:dind다음 docker run 명령을 사용하여 Docker 이미지를 다운로드하고 실행하십시오.

참고: 위의 명령 스니펫 복사 및 붙여넣기가 작동하지 않는 경우 주석이 없는 이 버전을 여기에 복사하여 붙여넣으십시오.

docker run --name jenkins-docker --rm --detach \
  --privileged --network jenkins --network-alias docker \
  --env DOCKER_TLS_CERTDIR=/certs \
  --volume jenkins-docker-certs:/certs/client \
  --volume jenkins-data:/var/jenkins_home \
  --publish 2376:2376 \
  docker:dind --storage-driver overlay2
 
아래 두 단계를 실행하여 공식 Jenkins Docker 이미지를 사용자 정의하십시오.
 
  • a. 다음 콘텐츠로 Dockerfile을 만듭니다.
FROM jenkins/jenkins:2.401.1
USER root
RUN apt-get update && apt-get install -y lsb-release
RUN curl -fsSLo /usr/share/keyrings/docker-archive-keyring.asc \
  https://download.docker.com/linux/debian/gpg
RUN echo "deb [arch=$(dpkg --print-architecture) \
  signed-by=/usr/share/keyrings/docker-archive-keyring.asc] \
  https://download.docker.com/linux/debian \
  $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list
RUN apt-get update && apt-get install -y docker-ce-cli
USER jenkins
RUN jenkins-plugin-cli --plugins "blueocean docker-workflow"
 
  • b. 이 Dockerfile에서 새 도커 이미지를 빌드하고 이미지에 의미 있는 이름(예: "myjenkins-blueocean:2.401.1-1")을 할당합니다.
docker build -t myjenkins-blueocean:2.401.1-1 .
 
위에서 설명한 프로세스는 이전에 수행되지 않은 경우 공식 Jenkins Docker 이미지를 자동으로 다운로드합니다.

 

다음 명령을 사용하여 Docker에서 자신의 myjenkins-blueocean:2.401.1-1이미지를 컨테이너로 실행합니다 docker run .

참고: 위의 명령 스니펫 복사 및 붙여넣기가 작동하지 않는 경우 주석이 없는 이 버전을 여기에 복사하여 붙여넣으십시오.

docker run --name jenkins-blueocean --restart=on-failure --detach \
  --network jenkins --env DOCKER_HOST=tcp://docker:2376 \
  --env DOCKER_CERT_PATH=/certs/client --env DOCKER_TLS_VERIFY=1 \
  --publish 8080:8080 --publish 50000:50000 \
  --volume jenkins-data:/var/jenkins_home \
  --volume jenkins-docker-certs:/certs/client:ro \
  myjenkins-blueocean:2.401.1-1
 

설치 후 설정 마법사를 진행합니다 .

Windows에서

Jenkins 프로젝트는 Windows 컨테이너 이미지가 아닌 Linux 컨테이너 이미지를 제공합니다. Windows용 Docker 설치 Linux Containers가 Windows Containers. Linux 컨테이너로 전환하는 지침은 Docker 설명서를 참조하십시오 . 실행하도록 구성되면 Linux Containers단계는 다음과 같습니다.

명령 프롬프트 창을 열고 위의 macOS 및 Linux 지침과 유사하게 다음을 수행합니다.

Docker에서 브리지 네트워크 만들기

docker network create jenkins
 

docker:dind Docker 이미지 실행

docker run --name jenkins-docker --rm --detach ^
  --privileged --network jenkins --network-alias docker ^
  --env DOCKER_TLS_CERTDIR=/certs ^
  --volume jenkins-docker-certs:/certs/client ^
  --volume jenkins-data:/var/jenkins_home ^
  --publish 2376:2376 ^
  docker:dind
 

아래 두 단계를 실행하여 공식 Jenkins Docker 이미지를 사용자 정의하십시오.

다음 콘텐츠로 Dockerfile을 만듭니다.

FROM jenkins/jenkins:2.401.1
USER root
RUN apt-get update && apt-get install -y lsb-release
RUN curl -fsSLo /usr/share/keyrings/docker-archive-keyring.asc \
  https://download.docker.com/linux/debian/gpg
RUN echo "deb [arch=$(dpkg --print-architecture) \
  signed-by=/usr/share/keyrings/docker-archive-keyring.asc] \
  https://download.docker.com/linux/debian \
  $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list
RUN apt-get update && apt-get install -y docker-ce-cli
USER jenkins
RUN jenkins-plugin-cli --plugins "blueocean docker-workflow"
 

이 Dockerfile에서 새 도커 이미지를 빌드하고 이미지에 의미 있는 이름(예: "myjenkins-blueocean:2.401.1-1")을 할당합니다.

docker build -t myjenkins-blueocean:2.401.1-1 .
 
위에서 설명한 프로세스는 이전에 수행되지 않은 경우 공식 Jenkins Docker 이미지를 자동으로 다운로드합니다.
 

다음 명령을 사용하여 Docker에서 자신의 myjenkins-blueocean:2.401.1-1이미지를 컨테이너로 실행합니다 docker run .

docker run --name jenkins-blueocean --restart=on-failure --detach ^
  --network jenkins --env DOCKER_HOST=tcp://docker:2376 ^
  --env DOCKER_CERT_PATH=/certs/client --env DOCKER_TLS_VERIFY=1 ^
  --volume jenkins-data:/var/jenkins_home ^
  --volume jenkins-docker-certs:/certs/client:ro ^
  --publish 8080:8080 --publish 50000:50000 myjenkins-blueocean:2.401.1-1
 

설정 마법사를 진행합니다.

 

플러그인으로 Jenkins 사용자 지정

Jenkins를 잠금 해제 하면 Jenkins 사용자 정의 페이지 가 나타납니다. 여기에서 초기 설정의 일부로 유용한 플러그인을 얼마든지 설치할 수 있습니다.

표시된 두 옵션 중 하나를 클릭합니다.

  • 제안된 플러그인 설치 - 가장 일반적인 사용 사례를 기반으로 하는 권장 플러그인 세트를 설치합니다.
  • 설치할 플러그인 선택 - 처음에 설치할 플러그인 세트를 선택합니다. 플러그인 선택 페이지에 처음 접속하면 제안된 플러그인이 기본적으로 선택됩니다.

어떤 플러그인이 필요한지 확실하지 않은 경우 제안된 플러그인 설치 를 선택합니다 . Jenkins의 Jenkins 관리 > 플러그인 페이지 를 통해 나중에 추가 Jenkins 플러그인을 설치(또는 제거)할 수 있습니다 .

 

설정 마법사는 구성 중인 Jenkins의 진행 상황과 설치 중인 선택한 Jenkins 플러그인 세트를 보여줍니다. 이 프로세스는 몇 분 정도 걸릴 수 있습니다.

첫 번째 관리자 사용자 만들기

마지막으로 플러그인으로 Jenkins를 사용자 정의한  Jenkins는 첫 번째 관리자 사용자를 생성하도록 요청합니다.

  1. 첫 번째 관리 사용자 만들기 페이지가 나타나면 해당 필드에 관리자 사용자의 세부 정보를 지정하고 저장 및 완료를 클릭합니다 .
  2. Jenkins 준비 완료 페이지가 나타나면 Start using Jenkins 를 클릭합니다 .
    노트:
    • 이 페이지는 Jenkins가 거의 준비되었음을 나타낼 수 있습니다! 대신 그렇다면 다시 시작 을 클릭하십시오 .
    • 페이지가 1분 후에도 자동으로 새로 고쳐지지 않으면 웹 브라우저를 사용하여 페이지를 수동으로 새로 고치십시오.
  3. 필요한 경우 방금 만든 사용자의 자격 증명으로 Jenkins에 로그인하면 Jenkins를 사용할 준비가 된 것입니다!
728x90
728x90

'IT 용어 정리' 카테고리의 다른 글

파일과 데이터의 차이  (0) 2023.11.11