사용 가이드

네이버 클라우드 플랫폼의 Container Registry는 Docker Registry v2 스펙의 Docker 컨테이너 이미지 저장소를 제공합니다. Docker 컨테이너 이미지는 Object Storage에 저장됩니다. 개발자는 Docker CLI 명령어를 이용하여 Docker 컨테이너 이미지를 업로드(Push) 및 다운로드(Pull)할 수 있습니다. 또한 Docker 컨테이너 이미지 저장 및 관리를 위한 인프라에 대한 고민할 필요가 없으므로, 컨테이너 개발에 집중할 수 있습니다.

제공 리전

아래의 리전에서 이용할 수 있습니다. 제공 가능한 리전은 앞으로 확대 예정에 있습니다.

리전 리전 코드
한국 KR

리전 코드는 레지스트리에 대한 엔드포인트로 사용됩니다. 레지스트리 이름과 리전 코드는 아래와 같이 레지스트리 엔드포인트에 사용됩니다.

  • 레지스트리 엔드포인트: <registry-name>.<region-code>.ncr.ntruss.com

제약 사항

  • 네이버 클라우드 플랫폼의 Container Registry를 이용하기 위해서는, Docker Engine 1.10 버전 이상이 필요합니다.
  • 해당 상품은 Object Storage 상품의 구독이 필요합니다. Object Storage의 버킷에 Docker 컨테이너 이미지가 저장됩니다.

레지스트리 생성하기

네이버 클라우드 플랫폼의 Container Registry를 사용하기 위해서는 레지스트리를 생성해야합니다. 레지스트리는 Docker 컨테이너 이미지가 저장 및 관리되는 단위입니다. 서브 계정의 경우 관리자(매니져) 권한이 있는 경우, 해당 기능이 허용됩니다.

ncr-1-3-1 ① 상품 상단의 레지스트리 생성 버튼을 클릭합니다.

ncr-1-3-2

② 레지스트리 이름을 입력합니다. 레지스트리 이름은 영소문자, 숫자, "-"를 사용할 수 있으며, 3~30자 이내의 길이로 작성되어야합니다. 또한 영소문자로 시작해야 하며, "-"로 끝날 수 없습니다.

③ 버킷 필드에는 Object Storage에 생성된 버킷들의 리스트가 표시됩니다. 생성할 레지스트리와 연동될 버킷을 선택합니다.

NOTE 생성된 버킷이 없는 경우, Object Storage 상품으로 이동하여 생성할 레지스트리와 연동될 버킷을 생성해야합니다. 레지스트리와 이미 연동한 버킷은 선택할 수 없습니다.

레지스트리 삭제하기

ncr-1-3-3

① 삭제하기 위한 레지스트리를 선택합니다. ② 레지스트리 삭제 버튼을 클릭합니다.

NOTE 레지스트리를 삭제하더라도, Object Storage에 저장된 Docker 컨테이너 이미지는 삭제되지 않습니다. 사전에 모든 이미지를 삭제 후에 레지스트리를 삭제하는 것을 권장합니다.


서브 계정 정책 관리하기

네이버 클라우드 플랫폼의 Sub Account 상품을 통해, 서브 계정에 Container Registry 권한을 할당할 수 있습니다. 서브 계정에 할당할 수 있는 Container Registry 정책은 아래와 같습니다.

  • Container Registry 관리자(NCP_CONTAINER_REGISTRY_MANAGER): 레지스트리 생성, 레지스트리 삭제, Docker 컨테이너 이미지 업로드(Push), Docker 컨테이너 이미지 다운로드(Pull), Docker 컨테이너 이미지 삭제
  • Container Registry 뷰어(NCP_CONTAINER_REGISTRY_VIEWER): 레지스트리 조회, Docker 컨테이너 이미지 다운로드(Pull)

Docker CLI 환경에서 서브 계정이 레지스트리에 로그인시 사용하는 아이디는 서브 계정의 API 인증키입니다. API 인증키는 Sub Account 상품에서 확인하실 수 있습니다. 사용하고자 하는 서브 계정에 대한 접근 유형(Access Type)의 API Gateway Access가 활성화된 경우, 서브 계정 상세에서 API 인증키를 확인하실 수 있습니다. 이외에도 API Gateway Access를 가진 서브 계정은 포털 > 마이페이지 > 계정 관리 > 인증키 관리에서 해당 서브 계정 인증키를 확인할 수 있습니다.


레지스트리 로그인하기

Docker CLI에서 로그인

네이버 클라우드 플랫폼에 생성한 레지스트리에 로그인하기 위한 예제입니다. 로그인을 위해서는 API 인증키와 생성한 레지스트리의 엔드포인트가 필요합니다.

ncr-1-2-1

레지스트리 목록의 상세 메뉴에서 로그인을 위한 엔드포인트를 확인할 수 있습니다. 네이버 클라우드 플랫폼의 Container Registry를 이용하기 위해서는 Docker Engine 1.10 이상의 버전이 필요합니다. 해당 버전이 설치되어 있는 경우, 터미널에서 Docker CLI를 이용하여 엔드포인트에 로그인할 수 있습니다. 로그인 시 필요한 사용자 아이디와 패스워드는 각각 API 인증키의 Access Key Id, Secret Key입니다.

$ docker login -u <access-key-id> <registry-name>.kr.ncr.ntruss.com
Password: <secret-key>
Login Succeeded

로그인 성공 후에는, Login Succeeded 메시지가 출력됩니다.

쿠버네티스(Kubernetes)에서 로그인

쿠버네티스에서 네이버 클라우드 플랫폼의 Container Registry를 이용하기 위한 secret을 생성하는 예제입니다.

아래는 kubectl 명령어를 이용하여 regcred라는 이름의 secret을 생성하는 예제입니다.

$ kubectl create secret docker-registry regcred --docker-server=<registry-end-point> --docker-username=<access-key-id> --docker-password=<secret-key> --docker-email=<your-email>

네이버 클라우드 플랫폼에 생성한 레지스트리의 이미지를 다운로드(Pull)하기 위해서는, template의 spec 영역의 imagePullSecrets에 앞서 생성한 secret 이름을 입력합니다.

Example: MySQL YAML

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: test-mysql
  labels:
    name: test-mysql
spec:
  replicas: 1
  template:
    metadata:
      labels:
        name: test-mysql
    spec:
      imagePullSecrets:
      - name: regcred
      containers:
      - name: test-mysql
        image: <registry-name>.kr.ncr.ntruss.com/mysql:5.7.21
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "1234"

Docker 컨테이너 이미지 업로드(Push)하기

docker login 명령어를 이용하여 특정 레지스트리의 엔드포인트에 로그인한 경우, 해당 레지스트리에 Docker 컨테이너 이미지를 업로드(Push)할 수 있습니다.

$ docker push <registry-name>.kr.ncr.ntruss.com/jenkins
The push refers to repository [mybear.kr.beta-ncr.ntruss.com/jenkins]
0577e068c587: Layer already exists
b1891bf16fa7: Layer already exists
37c1d818eb0b: Layer already exists
d51e4482f53a: Layer already exists
ceed640cbb93: Layer already exists
9c2e8b91bfa8: Layer already exists
c477b6c8ca45: Layer already exists
fa0c3f992cbd: Layer already exists
ce6466f43b11: Layer already exists
719d45669b35: Layer already exists
3b10514a95be: Layer already exists
latest: digest: sha256:0de43cde2c4b864a8e4a84bbd9958e47c5d851319f118203303d040b0a74f159 size: 4501

NOTE 서브 계정의 경우에는 Sub Account 정책에 관리자(매니져) 권한이 있어야, 해당 작업이 허용됩니다.

Docker 컨테이너 이미지 다운로드(Pull)하기

docker login 명령어를 이용하여 특정 레지스트리의 엔드포인트에 로그인한 경우, 해당 레지스트리에 저장된 Docker 컨테이너 이미지를 Pull할 수 있습니다.

아래의 예제는 레지스트리에 저장된 jenkins:latest 이미지를 다운로드하는 에제입니다.

$ docker pull <registry-name>.kr.ncr.ntruss.com/jenkins
Using default tag: latest
latest: Pulling from jenkins
55cbf04beb70: Pull complete
c58988e753d7: Pull complete
70fcfa476f73: Pull complete
0539c80a02be: Downloading [===============>                                   ]  40.52MB/133.9MB
54fefc6dcf80: Download complete
911bc90e47a8: Download complete
38430d93efed: Download complete
c0cbcb5ac747: Download complete
35ade7a86a8e: Download complete
aa433a6a56b1: Downloading [===================>                               ]  27.91MB/70.41MB
841c1dd38d62: Download complete
12b47c68955c: Download complete
1322ea3e7bfd: Download complete

NOTE 서브 계정의 경우에는 Sub Account 정책에 뷰어 이상의 권한이 있어야, 해당 작업이 허용됩니다.

Docker 컨테이너 이미지 관리하기

이 절에서는 네이버 클라우드 플랫폼의 Container Registry 상품의 대시보드에서, Docker 컨테이너 이미지를 관리하는 방법을 기술합니다.

업로드한 이미지 확인하기

ncr-1-3-5

① 레지스트리 목록에서 이미지 리스트의 이동 버튼을 클릭합니다.

ncr-1-3-6

② 이미지 리스트에서 업로드(Pull)한 목록을 확인할 수 있습니다.

테이블 헤더 설명
이미지 이름 컨테이너 이미지의 이름입니다.
Short Description 컨테이너 이미지에 대한 짧은 메모입니다.
최근 변경일 컨테이너 이미지에 대한 최근 변경일입니다.
Pulls 컨테이너 이미지를 다운로드한 횟수입니다.

이미지 Description 작성하기

이미지 리스트에서 특정 행을 클릭하면, 이미지에 대한 Short Description과 Full Description을 볼 수 있습니다. Edit 버튼을 클릭하여 Description을 작성할 수 있습니다.

  • Short Description: 100자 이내의 메모를 입력할 수 있습니다.
  • Full Description: Markdown 포맷을 지원합니다. 보다 풍부한 메모를 작성할 수 있습니다.

ncr-1-3-7

이미지 삭제하기

이미지 리스트에서 삭제하기 위한 이미지를 선택 후, 상단의 이미지 삭제 버튼을 클릭합니다. 모달창의 삭제 버튼을 클릭하여 해당 이미지를 삭제합니다. 이미지를 삭제하는 경우, 해당 이미지의 모든 태그(tag)들이 자동 삭제됩니다.

ncr-1-3-8

이미지 태그 삭제하기

이미지에 대한 태그(tag) 탭에서, 해당 이미지에 대한 태그(tag) 목록들을 확인할 수 있습니다. 각 태그 행에 있는 삭제 버튼을 통해, 해당 태그를 삭제할 수 있습니다.

ncr-1-3-9

연관 정보 바로가기

아래 가이드에서 연관 정보를 확인할 수 있습니다.

""에 대한 건이 검색되었습니다.

    ""에 대한 검색 결과가 없습니다.

    처리중...