[Docker] 도커란 무엇인가?

KyoonHo-Park
2 min readApr 13, 2020

--

도커란, 컨테이너 기반의 오픈소스 가상화 플랫폼이다.

여기서 컨테이너는, 우리가 쉽게 생각하는 배에 실는 화물 수송용 컨테이너와 같은 개념이다. 쉽게 물건을 운반하기 위해 컨테이너 안에 여러 화물을 넣는 것이다.

서버에서도 다양한 OS환경, 여러 프로그램들을 화물과 비유하여 컨테이너에 실어 여러 곳으로 운반하여 배포할 수 있다는 개념에서 비슷하다.

[#1. VM vs 컨테이너]

VM(Virtual Machine)은 호스트OS 위에 게스트OS를 가상화 하여 사용하는 방식이다. 게스트OS는 호스트OS의 자원을 할당받아 하이퍼바이저를 이용해 가상화하게된다. 하이퍼바이저는 호스트 시스템에서 다수의 게스트 OS를 구동할 수 있게 해주는 소프트웨어이다.

VM은 호스트OS의 리소스 분할(+오버헤드)과 OS위에 또 OS를 설치하기 때문에 속도저하의 단점이 있다.

컨테이너 기술은 호스트OS를 공유하며, 여러개의 컨테이너들이 서로 영향을 미치지 않고 독립적으로 실행되어 가볍다.
가장 큰 차이점은 프로세스를 격리 하는 것이다. VM은 가상머신들 사이에 오버헤드가 발생할때 상당한 시간이 걸린다.
반면, 컨테이너 기술은 독립적으로, 호스트OS의 자원을 공유하며 각각 필요한 자원들을 할당받아 실행되기 때문에 오버헤드가 적다.

docker.com

[#2. 컨테이너 생성]

컨테이너의 생성은 기본적으로 ‘도커파일’이라는 것을 이용한다.
가상화 할 프로그램들을 ‘도커파일’이란 DSL(Domain Specific Language)형태로 작성한다.

컨테이너 생성과정은 다음과 같다.

도커파일 -> (build) = 도커이미지 생성
도커이미지 -> (run) = 도커컨테이너 생성

도커 파일은 소스와 함께 버전관리도 된다.
도커 파일로 생성한 이미지들은 용량이 매우 크기 때문에 ‘도커허브’라는 곳에서 무료로 관리 할 수 있어 누구나 쉽게 공개 이미지들을 다운로드 받을 수 있다.

--

--

No responses yet