2024.07.09

김무영·2024년 7월 9일
post-thumbnail

-remote repository에서 브렌치를 복제
pipeline {
agent any

stages {
    stage('Hello') {
        steps {
  git branch:’브렌치명’,credentialsId:’github-token’, url:’repository URL’
}
    }

name/ email 설정

  • git config --global user.name "값"
  • git config --global user.email "값"

Git 초기화

  • git init

branch 명 변경

  • git branch –m 이전브랜치명 변경할 브랜치명

원격 저장소 추가

  • git remote add origin “저장소명”

원격저장소와 동기화

  • git pull origin 브랜치명

push

  • 초기화

    • git init
  • 원격저장소가 추가되어있지 않으면 추가

    • git remote add origin “Repository URL”
  • 파일 추가
    • git add .
  • 커밋
    • git commit -m “커밋메시지”
  • push
    • git push –u origin 브렌치명

젠킨스에서 빌드

jenkins > console output

pipeline {
    agent any

    tools {
        maven 'Maven' // Jenkins에 설정한 Maven 이름
    }

    environment {
        JAVA_HOME = 'C:\\dev\\java-17-openjdk-17.0.3.0.6-1'
        PATH = "${env.JAVA_HOME}\\bin;${env.PATH}"
    }

    triggers {
        pollSCM('H/6 * * * 1-5')
    }

    stages {
        stage('clone repository') {
            steps {
                git branch: 'main', credentialsId: 'github-token', url: 'https://github.com/YeongKing/test_jenkins2.git'
            }
        }
        stage('build WAR') {
            steps {
                script {
                    def mvnHome = tool name: 'Maven', type: 'hudson.tasks.Maven$MavenInstallation'
                    withEnv(["MAVEN_HOME=${mvnHome}"]) {
                        //pom.xml에 version노드의 war가 targit 디렉토리에 생성된다.
                        bat "\"${mvnHome}\\bin\\mvn\" clean package -DskipTests"
                    }
                }
            }
        }
    }
}

Docker

  • 리눅스의 LXC(LinuX Container)기술을 기반으로 발전해온 컨테이너 가상화 플랫폼.
  • 데이터 또는 프로그램을 각각 독립된 환경에 격리시키는 기능을 제공하는 소프트웨어.
  • 2013년 3월 닷 클라우드의 솔로몬 하익스에 의해서 발표된 운영체제를 통째로 격리시키는 오픈소스 가상화 플랫폼
    • 가상화 플랫폼(Virtualization Platform)은 물리적인 하드웨어 자원을 가상화하여 여러 가상머신이나 컨테이너에서 독립적으로 운영체제와 애플리케이션을 실행 할 수 있는 소포트웨어.
    • 가상화 플랫폼은 서버 자원을 효율적으로 활용, 비용절감, 유연한 자원 관리 제공.
  • 가상화 플랫폼
    1. Hypervisor
      • 타입1 : 베어메탈 => 직접 하드웨어 위에 설치되며 VM관리(MS Hyper-V)
      • 타입2 : 호스트형 => 기존 운영체제 위에 설치되며 VM관리(VirtualBox, VMWare)
    2. 가상머신(VM)
      • Hypervisor에 의해 실행되는 독립적인 운영체제와 애플리케이션 환경
      • 물리적인 서버의 H/W자원을 공유하면서도 독립적인 시스템 처럼 동작
    3. 컨테이너
      - 운영체 수준에서 가상화된 환경을 제공하며, 애플리케이션과 종속성을 격리된 공간에서 실행.
      - 가볍고 빠르게 실행된다.( Docker,Kubernetes(k8s) 대표적인 기술)

사용 기술

  • chroot, 네임스페이스, Cgroup 3가지 기술을 사용한다.
    • chroot : 특정 디렉토리를 최상위 디렉토리( root )로 설정하는 리눅스 명령.
    • 네임스페이스 : 프로세스 자원 관리 기능( mnt, pid,,, 그룹화하여 할당기능 )
    • Cgroup : CPU, 메모리, Disk IO, 네트워크 기능 등의 자원사용량을 제어하는 기능. => 특정 애플리케이션에서 과도한 자원사용을 방지할 수 있다.

도커와 가상머신의 차이

  • VM : H/W를 Host OS가 제어하고 Hypervisor를 사용하여 Guest OS를 올려서 별도에 독립적인 기능을 제공.
  • Container : H/W를 OS가 제어하고 Container를 사용하여 애플리케이션을 올려서 격리된 환경에서 독립적인 기능을 제공.

컨테이너 가상화의 장점

  • Hypervisor와 Guest OS가 없으므로 가볍다.
  • 경량의 이미지로 만들어지므로 복제, 이관, 배포가 용이하다.
  • Guest OS 부팅시간이 필요없다.
  • 가상머신보다 가볍기 때문에 동일한 H/W자원에서 더 많은 애플리케이션을 실행할 수 있다.

컨테이너

  • 코드와 모든 종속성을 패키지화 하는 표준 소프트웨어의 단위

도커 컨테이너 이미지

  • 애플리케이션 실행에 필요한 모든 것을 포함한 경량의 격리된 실행가능한 소프트웨어 패키지

주요기능

  • LXC를 이용한 컨테이너 구동, 도커 CLI제공 (도커제어명령)
    • LXC : Containerd의 데몬 프로세스로 이미지 전송, 컨테이너 실행 및 감독, 네트워커 연결 등 모든 컨테이너 라이프 사이클을 관리.

구성요소

  • Docker Engine : 컨테이너 및 이미지 제어
  • Docker Hub : 컨테이너 이미지를 배포하기 위한 공공 레지스트리 (공개 - 무료 , 비공개 - 유료)
  • Docker compose : 연관된 컨테이너 구성정보를 YAML 코드로 관리
  • Docker Swarm : 클러스터 기반의 도커 오케스트레이션 도구.

0개의 댓글