공부하고 기록하는, 경제학과 출신 개발자의 노트

학습일지/클라우드

[IBM Cloud 강의번역 프로젝트] - ch1-4. Docker Container Registry

inspirit941 2020. 9. 2. 12:02
반응형

IBM Cloud 1기 활동 - 강의번역 프로젝트.

원본 강의

cognitiveclass.ai/courses/kubernetes-course

 

Kubernetes and containers on IBM Cloud - Free Kubernetes course by IBM Cognitive Class

About this course Containers and Cloud Native are the most significant invention in IT since the introduction of virtualization. Everyone from a small startup to a large multinational corporation is transitioning to this technology and they are looking for

cognitiveclass.ai

강의의 한글자막 제공을 위해 srt 파일로 번역하는 프로젝트를 진행 중입니다.

문맥이 어색하거나 내용이 잘못되었다고 느껴지시면 댓글로 남겨주세요.


이제 컨테이너가 무엇인지 배웠습니다. 그런데, 컨테이너를 저장하는 곳은 어디이며, 어떻게 관리할까요?

컨테이너 레지스트리에서 이 작업을 수행합니다.

스크린샷 2020-09-01 오후 11 36 42

 

컨테이너 이미지는 로컬 환경에 저장됩니다. docker build 명령어를 실행해서 컨테이너 이미지를 생성하면, 이미지는 로컬 컴퓨터에 저장됩니다. 하지만 로컬에 저장하는 방식은 이미지를 다른 사용자에게 전달하거나 스테이지 / 프로덕션 환경에서 사용하기에는 불편합니다. 따라서, 컨테이너 이미지를 쉽게 저장하고 꺼내쓸 수 있는 장소가 필요합니다.

 

사용자가 생성한 컨테이너 이미지를 저장하고 배포할 때, 컨테이너 레지스트리를 사용합니다. 레지스트리 위에 많은 기능을 구축할 수 있지만, 레지스트리의 가장 기본적인 기능은 이미지를 저장하고, 다른 누군가가 이미지를 꺼내쓸 수 있도록 하는 것입니다.

 

레지스트리는 공개 또는 비공개 설정이 가능합니다. 이미지를 공개 레포지토리에 저장할 경우, 누구나 이미지를 가져올 수 있습니다. 오픈소스 프로젝트 또는 다른 사람이 보거나 사용해도 상관없는 수준의 개인 개발일 때 유용합니다. 대부분의 기업은 불특정 사용자가 이미지에 접근할 수 없도록 설정된 비공개 레지스트리를 사용합니다. 허가받은 사용자들만 이미지를 볼 수 있고, 사용할 수 있기 때문입니다.

 

레지스트리를 사용자 스스로 호스팅하거나, 호스팅된 레지스트리를 사용할 수도 있습니다. IBM Cloud Container Registry처럼 이미 호스팅되어 있는 레지스트리가 여러 개 있으며, 이 경우 사용자는 레지스트리 자체를 배포하거나 유지하는 수고를 들일 필요가 없습니다. 호스팅 서비스 제공업체들이 대신합니다.

 

사용자는 본인이 원하는 대로 레지스트리를 사용할 수 있습니다. 하지만 클라우드 또는 비공개 데이터 센터에서 운영되는 레지스트리도 있습니다. 제공하는 기능은 큰 틀에서 차이가 없지만, 클라우드나 비공개 데이터센터의 경우 접근하려는 사용자나 기업마다 별도의 제한 조건이나 선택지 제한이 있을 수 있습니다.

스크린샷 2020-09-01 오후 11 43 13

 

지금까지 이미지를 저장하고 꺼내쓰는 기능을 소개했지만, 이 기능을 지칭하는 공식 용어가 있습니다. 이미지를 레지스트리에 저장할 때는 이미지를 레지스트리에 "push" 하는 것이며, 이미지를 레지스트리에서 꺼내오는 작업은 이미지를 레지스트리에서 "pull" 한다고 표현합니다. 이 표현을 기억하세요: "이미지를 레지스트리에 push 하다"와 "이미지를 레지스트리에서 pull 하다".

 

이미지는 개발자들이 보통 push하며, 개발자가 세팅한 빌드 파이프라인을 통해 자동으로 push하기도 합니다. 이미지는 로컬 컴퓨터에 pull 되기도 하지만, 보통은 클라우드에서 구동중인 시스템이나 온프레미스에서 구동되는 쿠버네티스에 pull 되는 편입니다.

 

레지스트리는 사용자가 이름을 부여한 이미지를 저장하고, 이미지의 이름은 docker build나 docker tag 명령어로 설정할 수 있습니다. 보통은 이미지에 이름을 붙일 때, 일반적으로 따르는 형식이 있습니다. 이미지 이름은 크게 세 가지로 구분됩니다. 호스트명, 레포지토리, 태그입니다.

스크린샷 2020-09-02 오전 12 20 19

 

호스트명은 이미지를 push할 레포지토리를 식별합니다. Docker Hub의 경우, 레지스트리의 호스트명은 "docker.io" 입니다. U.S에서 IBM Cloud Container Registry에 이미지를 push할 경우, 레지스트리의 호스트명은 "us.icr.io" 입니다.

 

다음은 레포지토리입니다. 레포지토리는 연관성 있는 컨테이너 이미지의 그룹입니다. 보통은 동일한 애플리케이션이나 서비스의 다른 버전들이 하나의 그룹을 만드는 편입니다. 따라서 애플리케이션이나 서비스 이름이 곧 레포지토리 이름이 됩니다.

 

마지막으로, 태그입니다. 태그는 이미지의 특정 버전 정보나, 비슷한 이미지 정보를 제공합니다. 태그는 버전 번호이거나, 이미지의 다른 특성(예: 이미지가 빌드된 운영 체제) 을 나타냅니다.

 

예시를 보겠습니다. 이 이미지 이름은 명확한 정보를 담고 있습니다. 호스트명인 docker.io는 이 이미지가 Docker Hub에서 pull 되었음을 의미합니다. 레포지토리 이름은 ubuntu입니다. 따라서 이 이미지는 ubuntu image임을 알 수 있습니다. 마지막으로, ubuntu의 버전 정보를 알 수 있습니다. 실제로 Docker CLI는 호스트명이 없을 경우 docker.io 호스트명을 사용합니다. 따라서 이 간단한 명령어로 이미지를 pull 하는 것이 가능합니다. (docker pull ubuntu:18.04)

 

사용할 수 있는 컨테이너 레지스트리의 종류가 많기 때문에, 레지스트리에서 제공하는 추가 기능을 통해 레지스트리를 구분하기도 합니다. 표시된 이미지는 IBM Cloud Container Registry입니다.

스크린샷 2020-09-02 오전 12 56 09

 

왼쪽 상단의 상자는 IBM Cloud Container Registry가 제공하는 기능성을 의미합니다. 이미지와 상호작용할 수 있는 API, IBM이 제공하는 Public 이미지, 그리고 사용자가 자신의 이미지를 push할 수 있는 개인 레포지토리가 제공됩니다. Vulnerability Advisor는 이미지에서 확인할 수 있는 보안상 취약점을 확인해 줍니다. 위험에 노출되기 전 미리 보안을 보장해주기 때문에, 재정적 손실이나 불확실한 위협에서 보호받을 수 있습니다.

 

왼쪽 하단은, 사용자가 CLI 또는 GUI로 레지스트리와 상호작용할 수 있다는 점을 보여주고 있습니다.

 

오른쪽 내용은 IBM Cloud Kubernetes Service입니다. IBM Cloud Kubernetes Service는 IBM Cloud Container Registry에 인증 서비스를 제공하며, 레지스트리의 이미지를 Kubernetes 서비스의 컨테이너로 쉽게 배포할 수 있도록 해 줍니다.

 

몇 가지 예에 불과하지만, 이처럼 컨테이너 레지스트리는 일반적인 스토리지 서비스보다 더 강력한 기능을 제공합니다. 컨테이너 레지스트리 위에 구축된 이러한 기능들은 레지스트리의 매력을 높이고, 개발자들이 더 안전하고 생산적으로 작업할 수 있게 도와줍니다.

 

이제 컨테이너 레지스트리의 기본적인 목적과, 사용자가 어떻게 레지스트리와 상호작용하는지 알게 되셨을 것입니다. 또한 이미지의 이름을 지정할 때의 관습과, 레지스트리를 구별지을 수 있는 추가 기능들에는 어떤 것들이 있는지 학습하셨습니다.

 

다음 강의에서는 이미지를 가져와서 컨테이너로 실행하는 방법을 배우게 될 것입니다.

반응형