본문 바로가기

Docker

Docker란?

어떤 작업을 시작할 때는 항상 그 작업에 알맞는 환경을 구축해야한다. 하지만 이 과정은 굉장히 고통스럽다.

이전에 구축해 놓은 환경과 충돌이 생기는 경우가 허다하고 이전부터 현재까지의 작업이 모두 제대로 작동할 수 있는 환경을 구축하는 것은 너무나도 힘든 일이다. 

 

다른 사람이 구축해놓은 환경을 그대로 가져와서 사용하거나 

프로젝트마다 서로 독립된 환경을 구축할 수 있다면 좋을 것이다.

 

이를 위해 우리는 도커를 이용한다.

 

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

컨테이너란 격리된 공간을 만들어 그 공간 안에서 프로세스가 동작하도록 만드는 기술이다.

 

이는 우리가 일반적으로 알고있는 VM과는 다르다.(예전에 윈도우 컴퓨터에서 리눅스를 이용해야 할 일이 생겨 Oracle VM을 이용했었다.) VM은 호스트 OS위에 게스트 OS 전체를 가상화한다. VM은 하이퍼바이저를 사용하여 하드웨어를 emulation(기계 장치의 작동·기능을 모방하는 것)하고 이를 통해 여러 운영 체제를 동시에 실행한다. VM은 사용법은 간단하지만 컨테이너에 비해 효율적이지 못하고 무겁고 느리다는 단점을 가진다. 에뮬레이션 프로세스에 사이클을 할당함으로써 프로세서에 피해를 주는 대신에 사이클은 실행 연산으로 활용하기 때문이다.

 

 

이러한 VM의 단점을 개선하기 위해 프로세스를 격리 하는 컨테이너 방식이 등장했다. 단순히 프로세스를 격리시키기 때문에 가볍고 빠르게 동작한다. CPU나 메모리는 딱 프로세스가 필요한 만큼만 추가로 사용하게 되고 성능의 손실도 많이 줄어든다.

 

 

출처 : https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html

 

컨테이너는 동일한 운영 체제 커널을 공유하고 시스템의 나머지 부분으로부터 애플리케이션 프로세스를 격리한다. 예를 들어, x86 Linux 시스템은 x86 Linux 컨테이너를 실행하고, x86 Windows 시스템은 x86 Windows 컨테이너를 실행한다. Linux 컨테이너는 이식성이 매우 뛰어나지만 기본 시스템과 호환되어야 한다.

 

도커로 환경을 구축하려면 몇가지 단계만 거치면 된다.

 

1. Dockerhub에서 자신의 작업 환경에 잘 맞는 image를 찾는다.

2. image pull한다.

3. image를 run하여 컨테이너를 구축한다.

4. 컨테이너에서 필요한 작업을 신나게 한다.

 

what is image?

컨테이너 실행에 필요한 파일과 설정값을 내포하고 있는 것.

 

what is container?

image를 실행한 상태