Docker 이미지 레지스트리를 Docker 환경에서 구성하는 방법은 아래 단계를 따라 하나씩 진행하면 됩니다.
참고: 이 예제에서는 registry:2
이미지를 사용하여 Docker 레지스트리를 실행하겠습니다.
- Docker 이미지 레지스트리를 실행할 디렉토리를 생성합니다. 이 디렉토리는 이미지 데이터를 저장하는 데 사용됩니다.
/path/to/registry/data
경로는 레지스트리 데이터를 저장할 원하는 경로로 변경해야 합니다.mkdir /path/to/registry/data
- 다음 명령어를 사용하여 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
경로로 마운트하여 데이터를 저장합니다. 이것은 레지스트리 데이터를 보존하는 데 중요합니다.
- Docker 이미지 레지스트리가 실행 중이면 다음 단계로 진행합니다.
- 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
: 태그된 이미지를 레지스트리에 푸시합니다.
- 레지스트리에 이미지를 성공적으로 푸시하고 검색하면 레지스트리가 정상적으로 작동합니다.
이제 Docker 이미지 레지스트리를 로컬 환경에서 구성하고 사용하는 방법을 알게 되었습니다. 필요한 경우 자세한 설정이나 사용 사례에 따라 Docker 레지스트리를 확장할 수 있습니다. 관련 문서와 자세한 내용은 Docker 공식 문서와 GitHub 저장소에서 확인할 수 있습니다.
Docker 레지스트리를 사용하는 이유는 다음과 같습니다.
- 개발 환경에서 Docker 이미지를 개인 저장소에 백업하고, 나중에 필요할 때 다시 가져오기가 용이합니다.
- Private Docker 이미지 저장소를 통해 이미지를 안전하게 관리하고 공유할 수 있습니다.
Docker 레지스트리 사용
- Docker 레지스트리에 로그인
docker login localhost:5500
- 이미지 빌드
docker build --tag ubuntu:my .
- 이미지 태그
docker image tag ubuntu:my localhost:5500/ubuntu:my
- 이미지 푸시
docker image push localhost:5500/ubuntu:my
이제 개인용 Docker 레지스트리를 구축하고 사용하는 방법에 대한 설명이고, 필요한 경우 사용자 정의 사항을 추가할 수 있습니다.
Docker 이미지를 GitLab CI/CD를 통해 빌드하고 레지스트리에 푸시하는 프로세스는 다음 단계로 나뉩니다.
- GitLab 프로젝트 설정
- GitLab 프로젝트를 생성하거나 선택하십시오.
- 프로젝트 루트 디렉토리에 Dockerfile을 생성하거나 이미 존재하는 Dockerfile을 사용하십시오.
- GitLab CI/CD 설정 파일 생성
.gitlab-ci.yml
파일을 프로젝트 루트 디렉토리에 생성하십시오. 이 파일은 GitLab CI/CD 파이프라인을 정의하는 데 사용됩니다. .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 브랜치에 푸시된 경우 추가적인 배포 작업을 수행합니다.- GitLab 설정
- GitLab 프로젝트에서 Repository > Settings로 이동하여 "CI/CD" 탭을 선택하십시오.
- "Runners" 섹션에서 사용 가능한 Runner를 활성화하고 Runner를 프로젝트에 등록합니다.
- GitLab Runner 설정
- GitLab Runner가 Docker 빌드 작업을 실행할 수 있도록 구성되어 있는지 확인하십시오.
- 필요한 Docker 이미지가 로컬 머신 또는 GitLab Runner에서 사용 가능한지 확인하십시오.
- 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가 실행되면 자동으로 설정되며, 프로젝트 및 브랜치에 따라 다르게 설정됩니다.
$CI_REGISTRY_IMAGE
: 이 환경 변수는 Docker 이미지의 이름을 나타냅니다. 기본적으로 GitLab Container Registry를 사용하면$CI_REGISTRY_IMAGE
는 GitLab Container Registry의 이미지 저장소 주소와 프로젝트 이름을 가지고 있습니다. 이 변수는 Docker 이미지를 빌드하고 푸시할 때 사용됩니다.$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
파일 내에서 해당 변수를 사용할 수 있습니다.
환경 변수를 설정하려면 다음 단계를 따를 수 있습니다.
- GitLab 프로젝트에 로그인하고 프로젝트 대시보드로 이동합니다.
- 프로젝트 대시보드에서 "Settings" 또는 "설정"을 클릭합니다.
- 왼쪽 메뉴에서 "CI/CD"를 선택합니다.
- "Variables" 섹션을 찾고 "Add variable"을 클릭합니다.
- 다음 정보를 입력합니다:
- Key: 환경 변수의 이름 (예:
MY_VARIABLE
) - Value: 환경 변수의 값 (예:
my_value
) - Type: 환경 변수의 유형 (예: "Variable" 또는 "File")
- Protected: 환경 변수를 보호할지 여부를 설정 (일반적으로 기본값인 "Not protected"를 유지)
- Key: 환경 변수의 이름 (예:
- "Add variable"을 클릭하여 환경 변수를 저장합니다.
이렇게 설정한 환경 변수는 GitLab CI/CD 파이프라인에서 사용할 수 있습니다. .gitlab-ci.yml
파일 내에서 $MY_VARIABLE
과 같은 환경 변수를 사용할 수 있으며, 해당 변수의 값은 설정한 값으로 설정됩니다.
환경 변수를 사용하면 CI/CD 파이프라인 설정을 보다 동적으로 만들고, 중요한 데이터를 안전하게 보호할 수 있습니다.
댓글