[TOAST Study] 4. Docker

  세번째 스터디 과제 : 인스턴스에 도커 설치 및 도커 gui_container 생성하여 도커 허브에 올리고 다른 os에서 내 이미지 받아오기

  도커의 등장 배경

2010년을 넘어가면서 서버 시장은 물리적 서버 환경에서 클라우드 환경으로 옮겨갔다. 이로 인해 클릭 한 번으로 서버는 쉽게 생성해 낼 수 있게 되었지만, 각 서버에 필요한 소프트웨어의 설치 및 배포가 다음 문제였다. 리눅스/유닉스 환경에서 사용해왔던 셸 스크립트로 설치 및 설정 자동화를 구현해도 되지만 이것도 한계점이 도달했다. 
이런 상황에서 나온것이,
 Immutable Infrastructure
호스트 OS와 서비스 운영 환경을 분리하고 한번 설정한 운영 환경은 변경하지 않는다

는 개념이다. 서비스 운영 환경을 이미지로 생성한 뒤 서버에 배포하여 실행하는 것이다. 

Immutable Infrastructure의 장점
  1. 편리한 관리 : 이미지 자체만 관리하면 되고 버전 관리 시스템 활용이 가능
  2. 확장 : 이미지 하나로 서버를 계속 찍어낼 수 있음
  3. 테스트 : 테스트 서버에서 이미지를 실행하기만 하면 서비스 운영 환경과 동일한 환경이 구성되기 때문에 테스트가 쉽다
  4. 가볍다 : OS와 서비스 운영환경이 분리되어 가볍고 어디서든 실행 가능한 환경을 제공한다 (Lightweight & Portable)
Immutable Infrastructure를 구현한 오픈 소스 프로젝트가 2013년 3월에 출시한 Docker 이다.

가상머신 vs 도커

가상머신
VMware 등의 프로그램으로 OS 위에 게스트 OS를 설치하여 사용하는 하나의 완전한 컴퓨터이다. 이미지 용량이 커지고 매우 무거워서 성능이 좋지 못한것이 큰 단점이다. 전가상화(Full Virtualization)의 느린 속도를 개선하기 위해 반가상화(Paravirtualization)이 개발되었지만 여전히 성능에 문제가 있다.

Image result for 전가상화


  • 전가상화 : 컴퓨팅 시스템의 하드웨어 리소스를 완전하게 가상화하는 방식으로, 게스트 os에 아무 수정 없이 사용하기 쉽지만, CPU의 VT(Virtualization Technology)를 이용하므로 가상화에 대한 오버헤드가 크다
  • 반가상화 : 게스트 os를 수정하여 게스트 os가 가상화되고 있음을 인식하도록하여 하이퍼바이저(컴퓨터에 가상화를 구현하기 위해 설치하는 소프트웨어)가 필요할 때 자동 호출 되도록 한다. 하이퍼바이저의 호출 횟수를 최소화함으로 성능을 향상시킬 수 있지만 게스트 os가 수정되어야하기 때문에 os 소스코드에 대한 접근이 가능해야하고 도입이 어려운 단점이 있다.


도커
도커는 좀 더 경량화된 방식이다. 게스트 os의 설치 없이 도커 이미지를 서버 운영을 위한 프로그램과 라이브러리만 격리하여 설치 할 수 있고 OS자원은 호스트와 공유하면서 이미지 용량이 크게 줄어든다.
Image result for DOCKER

도커에는 이미지컨테이너라는 개념이 있다. 도커 '이미지'라고 하면, 베이스 이미지에 필요한 프로그램과 라이브러리, 소스를 설치한 뒤 파일 하나로 만든 것이다. 베이스 이미지에 사용자가 필요한 프로그램, 라이브러리, 소스를 설치하면 베이스 이미지와 비교해서 변경된 부분만을 합쳐서 실행하므로 용량이 큰 이미지가 중복되는 일은 없다. 이렇게 부모 이미지를 계속 참조하면서 바뀐 부분의 자식이미지와 함께 받는 방식으로 동작하는 것을 도커에서 레이어라고 한다.
'컨테이너'는 이미지를 실행한 상태이다. 운영체제 관점에서 보면 이미지는 실행파일이고 컨테이너는 프로세스이다.


No comments:

Powered by Blogger.