네이버클라우드

[Ncloud] 도커와 컨테이너 알아보기

graph-dev 2023. 7. 28. 16:48
728x90

 

이전 글에서는 리눅스 서버를 생성하고 로그인하는 과정을 심도있게 다루었습니다.

 

이번 글부터는 그 과정을 넘어가서 서비스 상품을 중점적으로 살펴보겠습니다.

 

 

 

도커 (docker)

도커는 컨테이너를 기반으로 만든 오픈소스 플랫폼입니다. Python 컨퍼런스에서 리눅스 컨테이너 세션에서 처음 소개되었다고 합니다. 편의성이 높아서 많은 개발자와 엔지니어에게 관심을 받았습니다. 클라우드에 올라가는 컨테이너 서비스를 소개합니다. 클라우드에도 컨테이너에 올려서 사용할 수 있습니다. 

 

container registry

컨테이너 레지스트리(Container Registry)

최근 개발트렌드는 도커와 쿠버네티스와 같은 컨테이너 활용 방향으로 변하고 있습니다. 네이버 클라우드도 트렌드에 맞게 컨테이너 레지스트리, 쿠버네티스와 같은 서비스를 제공하고 있습니다. 클라우드 내에서 컨테이너 관리를 편하게 해주는 서비스로 Container Registry가 있습니다. 컨테이너 저장소로는 Object storage를 사용하며, 컨테이너라는 개념을 편리하게 사용하도록 도와주는 서비스입니다.

 

컨테이너의 저장 역할은 레지스트리입니다. 서비스를 제공하지 않으면, 외부에서 직접 가져오는 등 별도의 설정이 필요하여 불편할 수 있습니다. 그래서 Object Storage라는 상품군을 컨테이너 레지스트리로 이용하게 만들었습니다. 저장소 역할을 하는 Object Storage를 레지스트리에서 이용하므로 별도 저장소 없이, 콘솔을 통해 설정이 가능합니다. 또한, 도커 레지스트리 버전은 HTTP API V2를 지원합니다.

 

Public, Private endpoint를 제공합니다. public endpoint는 외부에서 접근할 때 사용하고, 반면 private endpoint는 내부에서 접근할 때 사용합니다. 내부에서도 컨테이너 레지스트리를 접근할 경우가 있으며, 레지스트리 업데이트를 하거나 get, put 등의 명령어를 사용할 때 사용합니다.

 

저장소로 Object Storage가 연동되어 컨테이너 관리가 좀 더 쉬워집니다. 이 스토리지는 생성시 버킷이 있고 폴더를 생성하고, 폴더 내 어떤 컨테이너가 저장되었는지 Object storage에서 리스트 업이 가능합니다. Object storage는 네이버 클라우드에서 지속적으로 관리해줍니다. 따라서, 컨테이너의 취약점 분석이 가능합니다. 또한, 네이버 클라우드의 관리를 통해 사용자가 컨테이너 관리해야할 포인트를 제공하여 도움을 줄 수 있습니다.

 

협업과 접근 제어 측면에서, Sub Account를 사용해서 사용자, 역할 기준으로 서로 다른 권한을 지정하므로, 저장소를 다른 사용자와 공유할 때 좀 더 세부적인 접근이 가능합니다.

 

 

Dockerfile

Docker를 사용할 때, 자주 사용하는 도커파일을 생성할 수 있습니다. Dockerfile은 컨테이너 이미지를 설명하는 파일입니다. Dockerfile을 이용해서 컨테이너 이미지를 생성(build)할 수 있습니다. 나아가 컨테이너 이미지를 업데이트할 수도 있습니다.  

Dockerfile과 컨테이너

 

가상화 vs 컨테이너

일반 VM과 컨테이너는 차이가 있습니다. 일반 VM에서는 단일 시스템에서 여러 OS를 동시에 실행합니다. 반면 컨테이너는 동일한 OS를 호스트로 잡고 커널을 공유하고, 시스템의 나머지 부분에서 프로세스를 나눌 수 있습니다. 즉, OS 전체 가상화 방식이 아니라, 하나의 OS커널 위에 개별 프로세스와 환경을 나누는 방식을 사용하므로, OS 가상화보다 오버헤드도 적고 성능 손실이 적습니다. 또한, 하이퍼바이저가 없는 것도 컨테이너의 특징입니다. 경량화된 VM으로, 전체가 아니라 필요한 부분만 수정할 수 있어 효율적입니다.

 

도커 허브와 도커 레지스트리

사용자 생성 이미지를 Docker Registry라는 이미지 저장 공간에 업로드하고 타 사용자 이미지도 공유해서 사용할 수 있습니다. 공식적으로 이러한 이미지를 가져오는 곳이 Docker hub가 있으며, 하나의 이미지를 공유해서 사용하도록 돕는 도커 레지스트리라는 것이 있습니다. 공식이 아닌 사설 레지스트리로는, 다양한 CSP사가 제공하는 서비스를 활용할 수 있습니다. 여기서는 Ncloud Container Registry를 포함합니다.

 

레이어드 이미지

도커의 또다른 장점이 층화된 이미지를 갖는다는 것입니다. Union Filesystem 기술을 통해 여러 층(Layer)를 하나의 파일 시스템으로 인식됩니다. 이미지를 수정해야하면 레이어만 추가해서 변경 부분을 기록하고, 최상단에 읽고 쓰는 레이어가 있어서 활용하기 좋습니다. 공통적인 부분은 컨테이너가 공유해 사용하므로 좀 더 효율적인 이미지 관리가 될 수 있습니다. 이러한 이유로 어디서든 동일한 결과물을 낼 수 있으며, Base OS와 무관하게 실행할 수 있다고 할 수 있습니다. 특히, 실제 환경에서 배포할 때 문제가 있어 복원을 하는 경우가 있는데, 이를 컨테이너로 진행하면 Base 환경이 다르더라도 깔끔하게 복원이 가능합니다.