woniper

[Docker] 이미지와 컨테이너 본문

개발환경

[Docker] 이미지와 컨테이너

woniper1 2016. 12. 23. 15:20

Docker 엔진

  맥북을 사용하면서 공인인증서 결제를 사용하기 위해서 가상 머신으로 윈도우를 설치해본 경험이 있을 것이다.(없을수도ㅋㅋ)

가상화 기술에서는 현재 사용하고 있는 OS를 Host OS라하고, Host OS에 가상 머신으로 설치된 OS를 Guest OS라고 한다. 가상화 기술로는 전가상화반가상화가 존재하는데 이 글에서는 자세히 설명하지 않겠다.(사실 나도 잘 모른다.) 이 가상화 기술은 성능 문제가 있다. Guest OS를 설치한다는 것은 OS(host)안에 OS(guest)를 설치해서 사용하는 것이기 때문에 성능과 용량에 문제가 있을 수 밖에 없다. 

 때문에 Docker는 반가상화 기술보다 더 경량화 시킨 가상화 기술이다.(전가상화 -> 반가상화 -> Docker 엔진) Docker는 Guest OS를 사용하지 않고 Docker 엔진을 통해 필요한 라이브러리나 애플리케이션을 설치하고 이를 실행 시키기 위해 Docker 엔진은 Host OS와 OS 자원을 공유한다.(참고) Docker 엔진은 무거운 Guest OS를 설치하지 않고 가상화 기술을 사용해 성능 문제를 해결했다.


Docker 이미지

  애플리케이션과 실행 파일, 환경 설정 등을 설치할 수 있는 파일을 이미지라고 한다. 이미지는 베이스 이미지라는 것이 존재하는데 베이스 이미지는 이미지를 만들기 위한 기본 이미지를 말한다.

  예를 들어 nginx가 설치된 이미지를 만들기 위해서는 OS가 설치된 이미지가 필요한데(nginx가 실행되기 위해서는 당연히 OS가 있어야하니까.) OS가 설치된 이미지를 베이스 이미지라고하며, nginx 또한 이미지이다. 그런데 nginx뿐 아니라 다른 애플리케이션이 설치된 이미지를 만들기 위해 또 다른 이미지를 만드는 것은 베이스 이미지가 중복된다고 생각할 수 있는데, Docker는 중복되는 영역(베이스 이미지)은  공유해서 사용하기 때문에 문제가 되지 않는다.


Docker 컨테이너

  컨테이너는 이미지가 실행된 상태를 컨테이너라고 말한다.

Comments