728x90

도커란 무엇인가?


•컨테이너 기반의 오픈소스 가상화 플랫 폼

•다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해줌

•백엔드 프로그램, 데이터베이스 서버, 메시지 큐 등 어떤 프로그램도 컨테이너로 추상화 가능

•조립PC, AWS, Azure, Google cloud 등 어디에서든 실행 가능



도커를 이해하는데 필요한 기술


•가상화

•컨테이너, LXC(LinuX Container)

•이미지(Image), 레이어(Layer), 유니온파일시스템(Unionfs)

•레지스트리(Registry)

•Cgroups, 네임스페이스(Namespace)

•etc...



 컨테이너 &  LXC

LXC는 쉽게 생각해서 컨테이너를 만드는 방법이라고 생각하면 된다. (가상화 방법)

도커가 개발되기 전 (현재 도커가 LXC를 좀더 세련되게 만든것이라 생각하면 됨) 컨테이너를 만드는 대표적인 방식




•프로그램이 작동하기 위한 최소한의 요소들을 묶어 패키징한 프로세스

      •시스템의 나머지 부분과 격리됨

•작으면서 독립적인 배포와 실행을 가능하게 하는 일종의 가상 머신

•어플리케이션을 구동할 수 있는 환경을 가상화 하여 가볍고 성능이 좋고 더 많은 어플리케이션을 구동할 수 있어 빠른 빌드와 배포가 가능.



이미지


•이미지를 이해하기 위해선 레이어와 유니온파일시스템을 이해해야한다....

•이미지는 유니온파일시스템을 이용해서 레이어들의 집합을 뜻한다고 생각함


•컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있는 것으로 상태값을 가지지 않고 변하지 않음

•컨테이너는 이미지를 실행한 상태라고 볼 수 있고 추가되거나 변하는 값은 컨테이너에 저장

•같은 이미지에서 여러 개의 컨테이너를 생성할 수 있음

•컨테이너가 삭제 되더라도 이미지는 변하지 않고 그대로 남아 있음



레이어


•유니온 파일 시스템을 이용하여 여러 개의 레이어를 하나의 파일 시스템으로 사용할  수 있게 해줌

•이미지는 여러 개의 읽기 전용(read only) 레이어로 구성되고 파일이 추가되면 새로운 레이어가 생성 됨

•컨테이너 생성할 떄도 레이어 방식을 이용, 기존 이미지 레이어 위에 읽기/쓰기(read-write) 레이어를 추가


•webapp 소스 수정시

     webapp 레이어만 버전 2로 다운받으면 됨










유니온파일시스템


•레이어를 생성하여 작동하는 파일 시스템으로 매우 가볍고 빠름

•Docker Engine은 UnionFS를 사용하여 컨테이너에 대한 빌딩 블록을 제공

•AUFS,btrfs,vfs 및 DeviceMapper를 비롯한 여러 UnionFS변형을 사용할수 있음



레지스트리


•배포를 단순화 하기 위해 온라인 레지스트리에 보관

•대표적인 Docker registr(Docker Hub, Quay.io, Artifactory, Google Container Registry 및 IBM Cloud 컨테이너 레지스트리)

•사용자는 Redis,WordPress 또는 Ubuntu와 같은 특정 응용 프로그램이나 시스템에 대한 이미지를 보유하는 레지스트리 저장소를 만들수 있음

•사용자 이름, 저장소 이름 및 태그를 통해 이미지를 고유하게 식별



네임스페이스


•격리 된 작업 영역을 제공하기 위해 호출하는 기술

•Linux에서 사용하는 namespace(pid,net,ipc,mnt,uts) – 프로세스 격리



Cgroups (Control Groups)


•사용 가능한 하드웨어 리소스를 컨테이너에 공유, 선택적으로 제한 및 제약 조건을 적용

•예를 들어 특정 컨테이너에서 사용 가능한 메모리 제한

•리소스(CPU,메모리,I/O 등)을 격리

728x90

'Docker' 카테고리의 다른 글

도커(Docker) Volume 사용법  (1) 2018.08.29
도커(Docker) storage driver 변경  (0) 2018.08.23
도커(Docker) 사용법  (0) 2018.08.21
도커(Docker) 설치  (1) 2018.08.20