본문으로 건너뛰기

Container Registry를 이용한 이미지 저장 및 사용

이 문서에서는 카카오클라우드 Container Registry를 이용하여 컨테이너 이미지를 저장하고 사용하는 기본적인 방법을 소개합니다.

안내
  • 예상 소요 시간: 20분
  • 사용자 환경
    • 권장 운영 체제: MacOS
    • Region: kr-central-2
  • 사전 준비 사항

사전 준비

프로그램 설치

실습을 진행하기 위해서는 일부 프로그램 설치가 필요합니다. 로컬 환경에 요구하는 프로그램이 설치되지 않은 경우 아래 명령어를 확인하여 설치를 진행해 주시기 바랍니다.

brew 설치
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Git 설치
brew install git
Docker 설치
brew install --cask docker
# 설치된 docker desktop을 실행
# provoleged access 요구창이 뜨면 OK 누르고 랩탑 유저 암호 입력
docker help
# 명령어가 잘 뜬다면 설치 완료

Step 1. Container Registry 생성

Container Registry를 이용하여 컨테이너 이미지를 보관하여 활용할 수 있습니다.

  1. 카카오클라우드 콘솔 > Container Registry 메뉴에서 리포지토리를 생성할 수 있습니다. 아래 정보를 확인하여 리포지토리를 생성합니다.

    구분리포지토리 설정값
    공개 여부비공개
    리포지토리 이름tutorial
    태그 덮어쓰기가능
    이미지 스캔자동
  2. 생성한 리포지토리가 목록에 표시되는지 확인합니다.

Step 2. 예제 프로젝트 도커 이미지 빌드

예제 프로젝트 설치

  1. 예제 프로젝트를 설치할 디렉터리를 생성하고 작업 디렉터리를 생성한 디렉터리로 설정합니다.

    mkdir -p ~/Downloads/kakaocloud-library
    cd ~/Downloads/kakaocloud-library
  2. 그 다음 아래 명령어를 통해 예제 프로젝트를 설치합니다.

    git clone -b kakaocloud-library https://github.com/kakaoenterprise/kakaocloud-tutorials
  3. 작업 디렉터리를 예제 프로젝트 경로로 이동합니다.

    cd kakaocloud-tutorials
  4. 예제 프로젝트 파일을 확인합니다.

    ls

예제 프로젝트 빌드

  1. 프로젝트를 빌드하기 위해 Docker daemon이 실행 상태인지 확인합니다. 다음 명령어 이후 에러 메시지가 뜬다면, Docker desktop을 통해 Docker daemon을 실행합니다. MacOS 환경에서는 Docker desktop이 실행되면, Docker daemon도 자동으로 같이 실행됩니다.

    Docker 실행 환경 확인
    docker info
    에러 예제
    Client:
    Version: ...
    Context: ...
    ...
    ...

    Server:
    ERROR: Cannot connect to the Docker daemon at unix:///Users/kakao_cloud/.docker/run/docker.sock. Is the docker daemon running?
    errors pretty printing info
  2. 서버 프로젝트를 linux/amd64 환경으로 빌드합니다.

    docker build -t kakaocloud-library-server:latest --platform linux/amd64 -f ./server/deploy/Dockerfile ./server
  3. 빌드된 서버 컨테이너 이미지를 카카오클라우드 환경에 맞게 태그를 설정합니다.

    docker tag kakaocloud-library-server:latest {PROJECT_NAME}.kr-central-2.kcr.dev/{REPOSITORY_NAME}/kakaocloud-library-server:latest
    이름정보
    PROJECT_NAMEContainer Registry를 생성한 카카오클라우드 콘솔의 프로젝트 이름
    REPOSITORY_NAMEContainer Registry에서 생성한 리포지토리의 이름
  4. 클라이언트 프로젝트를 linux/amd64 환경으로 빌드합니다.

    docker build -t kakaocloud-library-client:latest --platform linux/amd64 -f ./client/deploy/Dockerfile ./client
  5. 빌드된 클라이언트 컨테이너 이미지를 카카오클라우드 환경에 맞게 태그를 설정합니다.

    docker tag kakaocloud-library-client:latest {PROJECT_NAME}.kr-central-2.kcr.dev/{REPOSITORY_NAME}/kakaocloud-library-client:latest
    이름정보
    PROJECT_NAMEContainer Registry를 생성한 카카오클라우드 콘솔의 프로젝트 이름
    REPOSITORY_NAMEContainer Registry에서 생성한 리포지토리의 이름

Step 3. 예제 프로젝트 이미지 업로드

Container Registry 로그인

  1. 로컬 머신에 사용자 정보를 입력하여 카카오클라우드 Container Registry에 로그인합니다.

    docker login {PROJECT_NAME}.kr-central-2.kcr.dev \
    --username {ACCESS_KEY} \
    --password {ACCESS_SECRET_KEY}
    이름정보
    PROJECT_NAME카카오클라우드 콘솔의 프로젝트 이름
    ACCESS_KEY액세스 키
    ACCESS_SECRET_KEY보안 액세스 키
  2. 로그인 결과를 확인합니다.

    # 예제 결과: Login Succeeded

컨테이너 이미지 업로드

  1. 서버 컨테이너 이미지를 업로드합니다.

    docker push {PROJECT_NAME}.kr-central-2.kcr.dev/{REPOSITORY_NAME}/kakaocloud-library-server:latest
    이름정보
    PROJECT_NAMEContainer Registry를 생성한 카카오클라우드 콘솔의 프로젝트 이름
    REPOSITORY_NAMEContainer Registry에서 생성한 리포지토리의 이름
  2. 클라이언트 컨테이너 이미지를 업로드합니다.

    docker push {PROJECT_NAME}.kr-central-2.kcr.dev/{REPOSITORY_NAME}/kakaocloud-library-client:latest
    이름정보
    PROJECT_NAMEContainer Registry를 생성한 카카오클라우드 콘솔의 프로젝트 이름
    REPOSITORY_NAMEContainer Registry에서 생성한 리포지토리의 이름

결과 확인

  1. 카카오클라우드 콘솔 > Container Registry 메뉴에서 생성한 tutorial 리포지토리에 접속합니다.

  2. 하단 이미지 탭에서 업로드한 이미지가 목록에 표시되는지 확인합니다.

    이미지 이름라벨
    kakaocloud-library-client-
    kakaocloud-library-server-
  3. 업로드된 이미지는 아래 명령어를 통해 다운로드할 수 있습니다. 로컬 머신에 입력하여 이미지를 설치합니다.

    서버 이미지
    docker pull {PROJECT_NAME}.kr-central-2.kcr.dev/{REPOSITORY_NAME}/kakaocloud-library-server:latest
    클라이언트 이미지
    docker pull {PROJECT_NAME}.kr-central-2.kcr.dev/{REPOSITORY_NAME}/kakaocloud-library-client:latest
    이름정보
    PROJECT_NAMEContainer Registry를 생성한 카카오클라우드 콘솔의 프로젝트 이름
    REPOSITORY_NAMEContainer Registry에서 생성한 리포지토리의 이름
  4. 다음 명령어를 이용하여 이미지가 설치되었는지 확인합니다.

    Docker 이미지 목록 조회
    docker images