Before 2022/AWS & DevOps

Docker 소개

Eljoe 2021. 2. 20. 18:40

Docker란?

2013년에 처음 출시된 컨테이너 기반 가상화 플랫폼으로써 GO Language로 작성, Apache 2.0 라이센스를 따른다.

 

컨테이너 방식으로 다양한 프로그램, 실행환경 등과 같은 프로세스들을 추상화하여 프로그램의 배포 및 관리를 단순하고 효율적인 '이미지' 방식으로 제공한다.

 

즉, 애플리케이션이나 바이너리/라이브러리를 묶어서 운영체제로부터 격리된 별도 공간에서 구동되는 가상머신이다.

가상머신?

호스트 머신에 가상화 H/W와 OS를 S/W로 호스트와는 다른 환경을 구축하여 별도의 컴퓨팅 환경을 제공하는 프로그램을 말한다. 

VMware나 VirtualBox같은 프로그램을 가상 머신 생성 프로그램이라 부른다.

그럼 Docker도 가상머신이네?

넓은 의미로는 가상머신이라고 할 수 있지만, VMware 및 VirtualBox같은 프로그램과는 큰 차이점이 있다.

 

Virtual Machine과 Docker의 차이

즉, Docker를 '컨테이너형 가상머신'이라 부르는 이유는 가상머신과는 다르게 H/W를 가상화하는 것이 아닌 단지 프로세스의 실행환경만을 격리(=컨테이너)하여 구동됨으로써, 호스트 입장에선 단순한 프로세스로 보이게 된다.

사용 이유?

예를 들어보자.

호스트 OS에서 우분투를 가상머신으로 VMware로 구동시키려면 다음과 같은 작업 절차가 필요하다.

 

  1. 호스트에서 VMware 프로그램과 우분투 OS 이미지를 각각 다운받는다.
  2. VMware에서 H/W 설정을 잡고 우분투 OS 이미지를 마운트하여 설치한다.

비교적 간단하지만, 프로그램과 이미지 다운로드 시간과 설치시간이 걸리며, 구동된 OS는 호스트 사양에 따라 무겁고 느리게 느껴질 수 있다.

 

그에 반에 도커는 어떤가?

 

  1. 도커가 설치된 호스트 OS에서 우분투 이미지를 'search' 명령어로 찾는다.
  2. 'pull' 명령어로 해당 이미지를 다운로드한다.
  3. 다운로드한 이미지를 'run' 명령어로 실행한다.

3개의 명령어를 입력하는 과정으로 호스트 OS에 별도의 우분투 OS 가상머신이 구동(컨테이너 실행)되었다.

또한 실행 시간도 우분투 명령어 치는 것과 별 차이가 없을 만큼 가볍고 빠르다.

 

즉, 여러 개의 컨테이너를 만들거나 삭제해도 빠르고 가볍기 때문에 호스트의 성능에 거의 손실이 없다.

Image?

도커에서 컨테이너와 함께 중요한 개념으로써, 컨테이너 실행에 필요한 파일이나 설정 값들을 포함하고 있는 환경 파일이다. 

즉 컨테이너는 이미지를 실행한 상태라고 볼 수 있으며, 이미지에 저장된 파일이나 설정 값을 토대로 컨테이너가 구성되는 방식이다.

 

위 그림과 같이 Docker Hub나 다른 저장소에서 제공하는 이미지를 다운받아(= pull) 컨테이너로 구동할 수 있으며(= run), 반대로 사용자가 이미지를 직접 구성하여 자기만의 이미지를 생성하여 저장소에 업로드 할 수도 있다.