Skip to content

Latest commit

 

History

History
36 lines (26 loc) · 3.58 KB

File metadata and controls

36 lines (26 loc) · 3.58 KB

도커란 무엇인가 ?

  • 도커는 컨테이너 기반의 오픈소스 가상화 플랫폼
  • 다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해준다.
  • 어떤 프로그램도 추상화할 수 있고 어디에서든 실행 가능하다.

컨테이너

  • 기존의 가상화 방식 (VMware, VirtualBox 같은 가상 머신으로)은 주로 OS를 가상화하였다. 즉, 호스트 OS위에 게스트 OS 전체를 가상화하여 사용
  • 비교적 사용법이 간단하지만 무겁고 느려서 운영 환경에서 사용할 수 없다.
  • CPU의 가상화 기술(HVM)을 이용한 KVMKernel-based Virtual Machine과 반가상화 Paravirtualization방식의 Xen이 등장 (OpenStack ...)
  • but 전가상화든 반가상화든 추가적인 OS를 설치하여 가상화하는 방법은 어쨋든 성능문제가 있었고 이를 개선하기 위해 프로세스를 격리 하는 방식이 등장
  • 리눅스에서는 이 방식을 리눅스 컨테이너라고 하고 단순히 프로세스를 격리시키기 때문에 가볍고 빠르게 동작한다. 컨테이너는 CPU, 메모리를 딱 프로세스가 필요한 만큼만 추가로 사용하므로 성능적으로 거의 손실이 없다.

이미지(Image)

  • 이미지는 컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있는 것으로 상태값을 가지지 않고 변하지 않는다.(Immutable)
  • 컨테이너는 이미지를 실행한 상태라고 볼 수 있고 추가되거나 변하는 값은 컨테이너에 저장된다.
  • 같은 이미지에서 여러개의 컨테이너를 생성할 수 있고 컨테이너의 상태가 바뀌거나 컨테이너가 삭제되더라도 이미지는 변하지 않고 그대로 남아있는다.
  • 말그대로 이미지는 컨테이너를 실행하기 위한 모든 정보를 가지고 있기 때문에 더 이상 의존성 파일을 컴파일하고 이것저것 설치할 필요가 없다.
  • 도커 이미지는 Docker hub에 등록하거나 Docker Registry 저장소를 직접 만들어 관리할 수 있다.
  • 이미지는 url 방식으로 관리하며 태그를 붙일 수 있다.

레이어 저장방식

  • 레이어(layer) + 유니온 파일 시스템 -> 여러개의 레이어를 하나의 파일 시스템으로 사용할 수 있게 해준다.
  • 이미지는 여러개의 읽기 전용 read only 레이어로 구성되고 파일이 추가되거나 수정되면 새로운 레이어가 생성된다. ubuntu 이미지가 A + B + C의 집합이라면, ubuntu 이미지를 베이스로 만든 nginx 이미지> 는 A + B + C + nginx가 된다. webapp 이미지를 nginx 이미지 기반으로 만들었다면 예상대로 A + B + C + nginx + source 레이어로 구성된다. webapp 소스를 수정하면 A, B, C, nginx 레이어를 제외한 새로운 source(v2) 레이어만 다운받으면 되기 때문에 굉장히 효율적으로 이미지를 관리할 수 있다.

Dockerfile

  • 도커는 이미지를 만들기 위해 Dockerfile이라는 파일에 자체 DSL(Domain-specific language)언어를 이용하여 이미지 생성 과정을 적는다.
  • 서버에 어떤 프로그램을 설치하려고 이것저것 의존성 패키지를 설치하고 설정파일을 만들 필요 없이 Dockerfile로 관리하면 된다.
  • 이 파일은 소스와 함께 버전 관리 되고 원한다면 누구나 이미지 생성과정을 보고 수정할 수 있다.

Links