
컨테이너 기술
개요
- 도커란 컨테이너 기반의 오픈소스 가상화 플랫폼
컨테이너란 호스트 OS상에 논리적인 구획(컨테이너)을 만들고, 애플리케이션을 작동시키기 위해 필요한 라이브러리나 애플리케이션 등을 하나로 모아, 마치 별도의 서버인 것처럼 사용할 수 있게 만드는 것
기존 가상화 방식과의 차이
기존
- 기존에는 OS를 가상화 하였다(VMware, VirtualBox) ⇒ 호스트 OS위에 게스트 OS 전체를 가상화하여 사용하는 방식
- 간단하지만 무겁고 느려서 운영환경에서 사용 불가하다.
개선책
- CPU 가상화 기술 HVM을 이용한 Kernel-based Virtual Machine(KVM) 과 반가상화(Paravirtualization) 방식의 XEN 등장
- 이러한 기술을 기반으로 Open Stack, AWS, Rackspace 같은 클라우드 서비스에서 가상화 컴퓨팅 기술의 기반이 되었다.
- 개선책이기는하나 성능에 손실이 있다.
도커의 아이디어
- 프로세스
격리하는 방식이 등장
- 프로세스를 격리시키기 때문에
가볍고 빠르게 동작한다.
- CPU나 메모리는 딱 프로세스가 필요한 만큼만 추가로 사용하고 성능적으로도
거의 손실이 없다.

이미지 출처
장점
하나의 서버에서 여러개의 컨테이너를 실행하며 서로 영향을 미치지 않고 독립적으로 실행하므로 가볍게 느껴진다.
실행중인 컨테이너에 접속하여 명령어를 입력할 수 있다.
CPU나 메모리 사용량을 제한할 수 있고 호스트의 특정 포트와 연결하거나 호스트의 특정 디렉토리를 내부 디렉토리인 것처럼 사용가능
새로운 컨테이너를 만드는데 속도가 빠르다(2초미만)
도커의 이미지

이미지 출처
개요
이미지는 컨테이너의 실행에 필요한 파일과 설정값등을 포함하고 있는것
상태값을 가지지 않고 변하지 않는다(immutable)
- 컨테이너는 이미지를 실행한 상태 추가되거나 변하는 값은 컨테이너에 저장됨
같은 이미지에서 여러개의 컨테이너 생성가능
- 컨테이너의 상태가 바뀌거나 컨테이너가 삭제되더라도 이미지는 변하지 않고 그대로 남음
한마디로 개꿀띠
새로운 서버에 개발환경 구축시 의존모듈을 일일이 설치할 필요가 없다!
레이어 저장 방식(feat 도커에 열광하는 이유)

이미지 출처
개요
- 도커 이미지는 컨테이너를 실행할 모든 정보를 담고 있기 때문에 요량이 수백 메가다
- 처음엔 상관없지만 이미지 파일이 늘어났을 경우 비효율이 발생한다
- 이를해 해결하고자
layer 개념이 사용
3줄 요약
- 개발 생태계에 맞추어 탄생한 아이디어 작품(마치 아이폰과 같이)
- 가상머신과 비교시 훨등한 실행 속도, 메모리 엑세스, 파일 시스템, 네트워크 실행 성능 향상
- 도커는 이미지를 구성하여 컨테이너(실행 환경)에서 실행가능(자동화)
다음포스팅 예고
레이어 저장 방식이란 무엇이고 왜 더 좋을까?
ref
초보를 위한 도커 안내서 - 도커란 무엇인가?