본문 바로가기
서버구축 (WEB,DB)

Distribution Registry & GitLab CI/CD 파이프라인 실행

by 날으는물고기 2023. 11. 2.

Distribution Registry & GitLab CI/CD 파이프라인 실행

Distribution Registry

Docker 이미지 레지스트리를 Docker 환경에서 구성하는 방법은 아래 단계를 따라 하나씩 진행하면 됩니다.

참고: 이 예제에서는 registry:2 이미지를 사용하여 Docker 레지스트리를 실행하겠습니다.

  1. Docker 이미지 레지스트리를 실행할 디렉토리를 생성합니다. 이 디렉토리는 이미지 데이터를 저장하는 데 사용됩니다. /path/to/registry/data 경로는 레지스트리 데이터를 저장할 원하는 경로로 변경해야 합니다.
    mkdir /path/to/registry/data
  1. 다음 명령어를 사용하여 Docker 이미지 레지스트리 컨테이너를 실행합니다. 이 컨테이너는 Docker Hub에서 registry:2 이미지를 다운로드하고 실행합니다. 포트 5000을 통해 레지스트리에 접근할 수 있게 설정되며, 컨테이너는 자동으로 다시 시작합니다.
    docker run -d -p 5000:5000 --restart always --name registry -v /path/to/registry/data:/var/lib/registry registry:2
    • -d 옵션: 컨테이너를 백그라운드에서 실행합니다.
    • -p 5000:5000 옵션: 호스트의 포트 5000을 컨테이너의 포트 5000으로 매핑합니다.
    • --restart always 옵션: 컨테이너가 중지되면 자동으로 다시 시작하도록 설정합니다.
    • --name registry 옵션: 컨테이너에 "registry"라는 이름을 지정합니다.
    • -v /path/to/registry/data:/var/lib/registry 옵션: 호스트의 디렉토리를 컨테이너 내의 /var/lib/registry 경로로 마운트하여 데이터를 저장합니다. 이것은 레지스트리 데이터를 보존하는 데 중요합니다.
  1. Docker 이미지 레지스트리가 실행 중이면 다음 단계로 진행합니다.
  1. Docker 레지스트리를 테스트하기 위해 아래 명령어를 사용하여 Ubuntu 이미지를 다운로드하고 레지스트리에 푸시합니다.
    docker pull ubuntu
    docker tag ubuntu localhost:5000/ubuntu
        docker push localhost:5000/ubuntu
    • docker pull ubuntu: Ubuntu 공식 이미지를 다운로드합니다.
    • docker tag ubuntu localhost:5000/ubuntu: 다운로드한 이미지를 레지스트리로 다시 태그합니다.
    • docker push localhost:5000/ubuntu: 태그된 이미지를 레지스트리에 푸시합니다.
  1. 레지스트리에 이미지를 성공적으로 푸시하고 검색하면 레지스트리가 정상적으로 작동합니다.

이제 Docker 이미지 레지스트리를 로컬 환경에서 구성하고 사용하는 방법을 알게 되었습니다. 필요한 경우 자세한 설정이나 사용 사례에 따라 Docker 레지스트리를 확장할 수 있습니다. 관련 문서와 자세한 내용은 Docker 공식 문서와 GitHub 저장소에서 확인할 수 있습니다.

 

Docker 레지스트리를 사용하는 이유는 다음과 같습니다.

  • 개발 환경에서 Docker 이미지를 개인 저장소에 백업하고, 나중에 필요할 때 다시 가져오기가 용이합니다.
  • Private Docker 이미지 저장소를 통해 이미지를 안전하게 관리하고 공유할 수 있습니다.

Docker 레지스트리 사용

  1. Docker 레지스트리에 로그인 docker login localhost:5500
  2. 이미지 빌드 docker build --tag ubuntu:my .
  3. 이미지 태그 docker image tag ubuntu:my localhost:5500/ubuntu:my
  4. 이미지 푸시 docker image push localhost:5500/ubuntu:my

이제 개인용 Docker 레지스트리를 구축하고 사용하는 방법에 대한 설명이고, 필요한 경우 사용자 정의 사항을 추가할 수 있습니다.

Docker 이미지를 GitLab CI/CD를 통해 빌드하고 레지스트리에 푸시하는 프로세스는 다음 단계로 나뉩니다.

  1. GitLab 프로젝트 설정
    • GitLab 프로젝트를 생성하거나 선택하십시오.
    • 프로젝트 루트 디렉토리에 Dockerfile을 생성하거나 이미 존재하는 Dockerfile을 사용하십시오.
  2. GitLab CI/CD 설정 파일 생성
    .gitlab-ci.yml 파일을 프로젝트 루트 디렉토리에 생성하십시오. 이 파일은 GitLab CI/CD 파이프라인을 정의하는 데 사용됩니다.
  3. .gitlab-ci.yml 파일에 다음과 같은 내용을 추가하십시오.
    image: docker:20.10
    
    variables:
      DOCKER_HOST: tcp://docker:2375/
      DOCKER_TLS_CERTDIR: ""
    
    services:
      - docker:20.10-dind
    
    stages:
      - build
      - deploy
    
    build:
      stage: build
      script:
        - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME .
        - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME
    
    deploy:
      stage: deploy
      script:
        - echo "Deploy to production here"
      only:
        - master
    .gitlab-ci.yml 파일은 두 단계를 정의합니다. 첫 번째 단계에서는 Docker 이미지를 빌드하고 레지스트리에 푸시하고, 두 번째 단계에서는 master 브랜치에 푸시된 경우 추가적인 배포 작업을 수행합니다.
  4. GitLab 설정
    • GitLab 프로젝트에서 Repository > Settings로 이동하여 "CI/CD" 탭을 선택하십시오.
    • "Runners" 섹션에서 사용 가능한 Runner를 활성화하고 Runner를 프로젝트에 등록합니다.
  5. GitLab Runner 설정
    • GitLab Runner가 Docker 빌드 작업을 실행할 수 있도록 구성되어 있는지 확인하십시오.
    • 필요한 Docker 이미지가 로컬 머신 또는 GitLab Runner에서 사용 가능한지 확인하십시오.
  6. GitLab CI/CD 파이프라인 실행
    • 변경 사항을 커밋하고 GitLab 프로젝트에 push하면 GitLab CI/CD 파이프라인이 실행됩니다.
    • 파이프라인은 빌드 및 푸시 단계를 실행하고, master 브랜치로 push된 경우에는 추가적인 배포 단계도 실행할 것입니다.

이렇게 설정하면 GitLab CI/CD를 사용하여 Docker 이미지를 빌드하고 레지스트리에 푸시할 수 있습니다. GitLab Runner는 빌드 작업을 실행하고 Docker를 사용하여 이미지를 빌드하고 푸시하게 됩니다. GitLab 레지스트리 또는 다른 Docker 레지스트리를 사용하려면 .gitlab-ci.yml 파일의 CI_REGISTRY_IMAGE 변수를 설정해야 합니다.

$CI_REGISTRY_IMAGE$CI_COMMIT_REF_NAME은 GitLab CI/CD 파이프라인 환경 변수로 제공되며, .gitlab-ci.yml 파일 내에서 사용할 수 있습니다. 이러한 환경 변수는 GitLab Runner가 실행되면 자동으로 설정되며, 프로젝트 및 브랜치에 따라 다르게 설정됩니다.

  1. $CI_REGISTRY_IMAGE: 이 환경 변수는 Docker 이미지의 이름을 나타냅니다. 기본적으로 GitLab Container Registry를 사용하면 $CI_REGISTRY_IMAGE는 GitLab Container Registry의 이미지 저장소 주소와 프로젝트 이름을 가지고 있습니다. 이 변수는 Docker 이미지를 빌드하고 푸시할 때 사용됩니다.
  2. $CI_COMMIT_REF_NAME: 이 환경 변수는 현재 CI/CD 파이프라인이 실행 중인 Git 브랜치의 이름을 나타냅니다. 이 변수를 사용하여 Git 브랜치에 따라 다른 작업을 수행하거나 이미지의 태그를 설정할 수 있습니다.

이러한 환경 변수는 .gitlab-ci.yml 파일 내에서 직접 설정할 필요가 없으며, GitLab Runner가 파이프라인을 실행하는 동안 자동으로 설정됩니다. 설정은 GitLab CI/CD의 기본 동작에 따라 이루어지며 프로젝트 또는 브랜치에 따라 자동으로 변경됩니다.

 

따라서 .gitlab-ci.yml 파일 내에서 이러한 환경 변수를 직접 설정하는 것은 일반적으로 필요하지 않습니다. GitLab Runner가 이러한 값을 자동으로 설정하고 사용합니다.

 

GitLab CI/CD 파이프라인에서 사용할 환경 변수는 GitLab 프로젝트 설정에서 설정할 수 있습니다. 이러한 환경 변수를 설정하면 .gitlab-ci.yml 파일 내에서 해당 변수를 사용할 수 있습니다.

 

환경 변수를 설정하려면 다음 단계를 따를 수 있습니다.

  1. GitLab 프로젝트에 로그인하고 프로젝트 대시보드로 이동합니다.
  2. 프로젝트 대시보드에서 "Settings" 또는 "설정"을 클릭합니다.
  3. 왼쪽 메뉴에서 "CI/CD"를 선택합니다.
  4. "Variables" 섹션을 찾고 "Add variable"을 클릭합니다.
  5. 다음 정보를 입력합니다:
    • Key: 환경 변수의 이름 (예: MY_VARIABLE)
    • Value: 환경 변수의 값 (예: my_value)
    • Type: 환경 변수의 유형 (예: "Variable" 또는 "File")
    • Protected: 환경 변수를 보호할지 여부를 설정 (일반적으로 기본값인 "Not protected"를 유지)
  6. "Add variable"을 클릭하여 환경 변수를 저장합니다.

이렇게 설정한 환경 변수는 GitLab CI/CD 파이프라인에서 사용할 수 있습니다. .gitlab-ci.yml 파일 내에서 $MY_VARIABLE과 같은 환경 변수를 사용할 수 있으며, 해당 변수의 값은 설정한 값으로 설정됩니다.

 

환경 변수를 사용하면 CI/CD 파이프라인 설정을 보다 동적으로 만들고, 중요한 데이터를 안전하게 보호할 수 있습니다.

728x90

댓글