본문 바로가기
12. 쿠버네티스란

도커 컨테이너 플랫폼

by 김덕환 2020. 5. 1.
반응형

컨테이너 기술은 오랫동안 사용되어 왔지만 도커 컨테이너 플랫폼의 등장으로 널리 알려졌다. 도커는 컨테이너를 여러 컴퓨터에 쉽게 이식 가능하게 하는 최초의 컨테이너 시스템이다. 컨테이너 시스템은 어플리케이션뿐만 아니라 라이브러리와 여러 의존성, 심지어 전체 운영체제 파일 시스템에 이르기까지 패키징 프로세스를 단순화시켰고, 도커가 운영중인 다른 머신에 어플리케이션이 프로비저닝할 수 있도록 단순하고 간편한 포터블 패키지로 변화시켰다. 

 

도커를 통해 패키지된 어플리케이션을 실행하면 어플리케이션은 도커에 함께 제공된 파일 시스템 내용을 정확하게 볼 수 있다. 개발 머신에서 실행중이든, 운영 머신에서 실행중이든, 심지어 운영 서버가 다른 리눅스 OS상에서 실행 중이든 동일한 파일을 보게 된다. 어플리케이션은 실행 중인 서버의 내용은 아무것도 보지 못하므로 개발 머신과 비교했을 때 전혀 다른 라이브러리 세트가 설치됐는지의 여부는 중요하지 않다. 

 

이것은 VM에 운영체제를 설치하고 그 안에 어플리케이션을 설치한 후, 전체 VM 이미지를 배포하고 실행해 VM 이미지를 만드는 것과 유사하다. 도커는 동일한 효과를 얻지만 VM을 사용해 어플리케이션을 격리하는 대신 리눅스 컨테이너 기술을 사용해 VM과 동일한 수준의 격리를 가능하게 한다. 거대한 모놀리식 VM 이미지를 사용하는 대신 VM의 이미지 크기보다 작은 컨테이너 이미지를 사용한다. 

 

도커 기반 컨테이너 이미지와 VM 이미지의 가장 큰 차이점은 컨테이너 이미지는 여러 레이어로 구성되어 있다는 점이다. 레이어는 여러 이미지에서 공유 및 재사용할 수 있다. 즉 동일한 레이어가 포함된 컨테이너 이미지를 실행할 떄는 이전에 다운로드된 이미지를 제외한 나머지 레이어만 다운로드해도 된다는 의미이다. 

 

 

도커의 개념 이해

 

도커는 어플리케이션의 패키징, 배포, 실행 플랫폼이다. 어플리케이션을 전체 환경과 함께 패키징할 수 있다. 어플리케이션에 필요한 라이브러리나 설치된 운영체제 파일 시스템에서 일반적으로 사용할 수 있는 모든 파일을 포함시킬 수 있다. 도커를 사용해 패키지를 중앙 스토리지로 전송한 후 도커를 실행하는 모든 시스템에 패키지를 전송할 수 있다. 

 

(1) 이미지 : 도커 기반 컨테이너 이미지는 어플리케이션과 환경을 패키지로 묶는다. 여기에는 어플리케이션에서 사용할 수 있는 파일 시스템과 이미지가 실행될 때 실행해야 하는 실행 파일의 경로 등과 같은 메타 데이터가 들어 있다. 

 

(2) 레지스트리 : 도커 레지스트리는 도커 이미지를 저장하고 사람들 간에 혹은 컴퓨터간에 이미지를 쉽게 공유할 수 있는 스토리지이다. 이미지를 빌드할 때 이미지를 빌드한 컴퓨터에서 실행하거나 이미지를 레지스트리로 푸시한 후 다른 컴퓨터에서 이미지를 가져와 실행할 수 있다. 공개 레지스트리는 누구나 이미지를 다운로드할 수 있지만 비공개 레지스트리는 권한이 있는 사람이나 컴퓨터에서만 액세스할 수 있다. 

 

(3) 컨테이너 : 도커 기반 컨테이너는 도커 기반 컨테이너 이미지에서 생성된 일반적인 형태의 리눅스 컨테이너다. 실행 중인 컨테이너는 도커를 실행하는 호스트에서 실행되는 프로세스지만 호스트와 호스트에서 실행되는 모든 프로세스 간에 완전히 분리되어 있다. 프로세스는 리소스가 제한되어 있어 할당된 리소스만 액세스해 사용할 수 있다. 

 

 

도커 이미지의 빌드, 배포, 실행

 

 

 

 

먼저 개발자가 이미지를 만들어 레지스트리로 푸시한다. 레지스트리를 액세스할 수 있는 모든 사용자가 이미지를 사용할 수 있다. 그런 다음, 이미지를 다른 이미지로 가져올 수 있다. 도커를 실행하는 컴퓨터에서 이미지를 실행한다. 도커는 이미지를 기반으로 분리된 컨테이너를 만들고 이미지의 일부로 지정된 바이너리 파일을 실행한다. .

반응형