도커(Docker) 간단히 말해서 컨테이너 기반 오픈소스 가상화 플랫폼입니다.

그러면 먼저 컨테이너가 뭔지부터 알아보겠습니다.

 

1. 도커 컨테이너(Container)?

도커 컨테이너는 프로그램 프로그램 실행 환경을 담고 있는 패키지 이미지입니다.

어렵나요?..

, 우리가 어떤 프로그램을 실행하려면 아래와 같은 단계가 필요합니다.

하드웨어 구매/설치

운영체제 설치

프로그램 실행 환경 설정

프로그램 설치

 

그러면 프로그램을 운영하는 일은 어떨까요?

운영을 하다 보면 프로그램 작은 패치 작업부터 대규모 업그레이드 작업까지 많은 작업이 필요합니다.

이런 작업에는 항상 리스크가 따라다니죠.

만약 문제가 발생하면 롤백을 해야 하는 상황이 발생하기도 합니다.

 

도커는 컨테이너 개념을 사용해서 이러한 배포/관리 작업을 단순화 시킵니다.

컨테이너라고 하는 추상화된 이미지 안에 프로그램 실행에 필요한 환경과 프로그램 코드를 심는 거죠.

그리고 도커 엔진으로 이미지들을 관리합니다.

, 하나의 운영체제에서 여러 실행 환경을 가질 있는 거예요.

 

예를 들어서, App A 실행시키기 위해서는 MySQL Apache Web Server 필요하다고 합시다.

개를 설치하기 위해서 여러 가지 부수적인 라이브러리들이 필요하겠죠?

이러한 것들을 모아 모아서 이미지 App A 만듭니다.

 

그리고 App B 실행시키기 위해서는 Oracle DB 파이썬이 필요하다고 하면, 필요한 것들을 모아서 이미지 App B 만들면 됩니다.

 

이미지들은 격리되어 있기 때문에 서로에게 영향을 끼치지 않습니다.

때문에 실행 환경 간에 충돌이 발생하지 않는다는 거죠.

 

하나의 장점은 컨테이너 이미지들을 뗐다 붙였다 하기가 쉽다는 겁니다.

만약에 App C 실행하다가 이제 더는 필요가 없어지면, 그냥 떼어 버리면 됩니다.

그럼 App C 차지하고 있던 리소스가 반납되겠죠?

나중에 필요하면 붙이면 되구요.

 

그리고 이미지들은 다른 호스트의 도커 환경에서 사용할 있습니다.

말인 , 배포가 쉽다는 거예요.

, 다른 사람이 만들어놓은 그냥 그대로 가져와서 사용할 수도 있습니다.

도커 허브(Docker Hub, https://hub.docker.com/search?q=&type=image) 들어가면 공개되어 있는 이미지를 그냥 그대로 사용할 있습니다.

 

2. 기존 가상 머신 vs 도커 컨테이너

"그래서 기존 가상 머신과는 뭐가 다른데?" 라고 하시면 아래 그림을 보시죠.

기존 가상 머신은 하이퍼바이저(Hypervisor)라고 하는 가상화 플랫폼 위에 새로운 운영체제를 올리는 방식을 사용합니다.

그대로 운영체제를 설치하는 거죠.

그리고 프로그램 실행을 실행하기 위한 환경 설정(라이브러리 설치, 프로그램 설치 ) 해야 합니다.

이러한 행위들은 자원을 낭비할 뿐더러 배포하는 데에 걸리는 시간도 길어집니다.

 

이렇게 도커에 대해서 간단하게 알아보았는데요,

오픈 소스를 싫어하던 마이크로소프트 역시 오픈 소스를 받아들이고 공생하는 방향으로 운영 방침을 바꾸었습니다.

도커 역시 이제 윈도우 환경에서 실행 가능하구요.

 

실제로 많은 회사들이 도커를 받아들이고 있다고 하니, 개발자분들, 엔지니어분들은 도커의 행보를 유심히 지켜볼 필요가 있을 같습니다.

 

참고자료:

https://www.docker.com/resources/what-container

https://ko.wikipedia.org/wiki/%EB%8F%84%EC%BB%A4_(%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4)

+ Recent posts