Container Registry를 이용한 이미지 저장 및 사용
이 문서에서는 카카오클라우드 Container Registry를 이용하여 컨테이너 이미지를 저장하고 사용하는 기본적인 방법을 소개합니다.
- 예상 소요 시간: 20분
- 사용자 환경
- 권장 운영 체제: MacOS
- Region: kr-central-2
- 사전 준비 사항
시작하기 전에
실습을 원활히 진행하기 위해서는 특정 프로그램이 로컬 환경에 설치되어 있어야 합니다. 만약 필요한 프로그램이 설치되어 있지 않다면, 아래 명령어를 참고하여 설치를 진행해 주세요.
1. Homebrew 설치
Homebrew는 macOS 환경에서 패키지 설치 및 관리를 돕는 도구입니다. 아래 명령어를 터미널에 입력하여 설치를 진행하세요. 설치 후 brew help
명령어를 실행하여 설치 여부를 확인할 수 있습니다.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
2. Git 설치
Git은 버전 관리 시스템으로, 실습에 필수적인 도구입니다. Homebrew를 사용해 아래와 같이 설치하세요. 설치 완료 후 git --version
명령어를 입력하여 Git 버전을 확인하세요.
brew install git
3. Docker 설치
Docker는 컨테이너 기반 가상화를 지원하는 도구로, 실습 환경 설정에 필요합니다. Homebrew의 cask 기능을 사용하여 설치합니다.
brew install --cask docker
# 설치된 docker desktop을 실행
# provoleged access 요구창이 뜨면 OK 누르고 랩탑 유저 암호 입력
docker help
# 명령어가 잘 뜬다면 설치 완료
시작하기
Step 1. Container Registry 생성
Container Registry를 이용하여 컨테이너 이미지를 보관하여 활용할 수 있습니다.
-
카카오클라우드 콘솔 > Container Registry 메뉴에서 리포지토리를 생성할 수 있습니다. 아래 정보를 확인하여 리포지토리를 생성합니다.
구분 리포지토리 설정값 공개 여부 비공개 리포지토리 이름 tutorial 태그 덮어쓰기 가능 이미지 스캔 자동 -
생성한 리포지토리가 목록에 표시되는지 확인합니다.
Step 2. 예제 프로젝트 도커 이미지 빌드
예제 프로젝트 설치
-
예제 프로젝트를 설치할 디렉터리를 생성하고 작업 디렉터리를 생성한 디렉터리로 설정합니다.
mkdir -p ~/Downloads/kakaocloud-library
cd ~/Downloads/kakaocloud-library -
그 다음 아래 명령어를 통해 예제 프로젝트를 설치합니다.
git clone -b kakaocloud-library https://github.com/kakaoenterprise/kakaocloud-tutorials
-
작업 디렉터리를 예제 프로젝트 경로로 이동합니다.
cd kakaocloud-tutorials
-
예제 프로젝트 파일을 확인합니다.
ls
예제 프로젝트 빌드
-
프로젝트를 빌드하기 위해 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 -
서버 프로젝트를
linux/amd64
환경으로 빌드합니다.docker build -t kakaocloud-library-server:latest --platform linux/amd64 -f ./server/deploy/Dockerfile ./server
-
빌드된 서버 컨테이너 이미지를 카카오클라우드 환경에 맞게 태그를 설정합니다.
docker tag kakaocloud-library-server:latest {PROJECT_NAME}.kr-central-2.kcr.dev/{REPOSITORY_NAME}/kakaocloud-library-server:latest
이름 정보 PROJECT_NAME Container Registry를 생성한 카카오클라우드 콘솔의 프로젝트 이름 REPOSITORY_NAME Container Registry에서 생성한 리포지토리의 이름 -
클라이언트 프로젝트를
linux/amd64
환경으로 빌드합니다.docker build -t kakaocloud-library-client:latest --platform linux/amd64 -f ./client/deploy/Dockerfile ./client
-
빌드된 클라이언트 컨테이너 이미지를 카카오클라우드 환경에 맞게 태그를 설정합니다.
docker tag kakaocloud-library-client:latest {PROJECT_NAME}.kr-central-2.kcr.dev/{REPOSITORY_NAME}/kakaocloud-library-client:latest
이름 정보 PROJECT_NAME Container Registry를 생성한 카카오클라우드 콘솔의 프로젝트 이름 REPOSITORY_NAME Container Registry에서 생성한 리포지토리의 이름
Step 3. 예제 프로젝트 이미지 업로드
Container Registry 로그인
-
로컬 머신에 사용자 정보를 입력하여 카카오클라우드 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 보안 액세스 키 -
로그인 결과를 확인합니다.
# 예제 결과: Login Succeeded
컨테이너 이미지 업로드
-
서버 컨테이너 이미지를 업로드합니다.
docker push {PROJECT_NAME}.kr-central-2.kcr.dev/{REPOSITORY_NAME}/kakaocloud-library-server:latest
이름 정보 PROJECT_NAME Container Registry를 생성한 카카오클라우드 콘솔의 프로젝트 이름 REPOSITORY_NAME Container Registry에서 생성한 리포지토리의 이름 -
클라이언트 컨테이너 이미지를 업로드합니다.
docker push {PROJECT_NAME}.kr-central-2.kcr.dev/{REPOSITORY_NAME}/kakaocloud-library-client:latest
이름 정보 PROJECT_NAME Container Registry를 생성한 카카오클라우드 콘솔의 프로젝트 이름 REPOSITORY_NAME Container Registry에서 생성한 리포지토리의 이름
Step 4. 결과 확인
-
카카오클라우드 콘솔 > Container Registry 메뉴에서 생성한
tutorial
리포지토리에 접속합니다. -
하단 이미지 탭에서 업로드한 이미지가 목록에 표시되는지 확인합니다.
이미지 이름 라벨 kakaocloud-library-client - kakaocloud-library-server - -
업로드된 이미지는 아래 명령어를 통해 다운로드할 수 있습니다. 로컬 머신에 입력하여 이미지를 설치합니다.
서버 이미지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_NAME Container Registry를 생성한 카카오클라우드 콘솔의 프로젝트 이름 REPOSITORY_NAME Container Registry에서 생성한 리포지토리의 이름 -
다음 명령어를 이용하여 이미지가 설치되었는지 확인합니다.
Docker 이미지 목록 조회docker images