본문 바로가기
CS/Docker

[CS/늦깎이스터디] Docker(도커) 란?

by Warehaus 2022. 1. 16.

개념

 

도커의 개념은 위키 그대로다.

 

리눅스 프로그램들을 프로세스 격리기술을 이용해 컨테이너로 실행하고 관리하기 위해서 만들어지 오픈소스 프로젝트

 

 

도커 (소프트웨어) - 위키백과, 우리 모두의 백과사전

도커(Docker)는 리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트이다. 도커 웹 페이지의 기능을 인용하면 다음과 같다: 도커 컨테

ko.wikipedia.org

 

그래서 그 프로젝트가 뭔가 싶은데 한 문장으로 정의를 하자면 아래와 같이 말할 수 있을 것 같습니다.

 

"Container 기술을 바탕으로 고립된 환경에서의 어플리케이션 수행을 지원하는 가상화 솔루션"

 

 

왜 도커인가?

 

기존의 가상화 기술은 Hypervisor를 이용해 여러 OS를 설치하고, 그 OS 내에서 SW를 실행하는 방식으로 운영해야 했습니다.

 

사실 이렇게 관리하더라도 Utilization 측면에서는 효율적으로 사용한다는 측면에서는 어느정도 괜찮은 방법일 수 있지만, 기본적으로 Hypervisor는 성능 Loss를 수반하기 때문에 한정 된 자원을 정말 효율적으로 사용 가능한지에 대한 의구심을 품게합니다.

 

Utilization 을 효율적으로 사용한다는 것도 거의 보여주기 식이 될 수 밖에 없는게, VM이 사용하고 있는 자원도 잘 쓰고 있는 것 처럼 보일테니까요.

 

이러한 성능 손실을 최대한 줄이기 위해 컨테이너 기술이 발전하게 되었고, 리눅스 자체 기능인 chroot, namespace, cgroup을 사용함으로써 프로세스 단위의 격리환경을 만들어 성능손실이 거의 없는 프로세스 격리수행이 가능해 졌습니다.  게다가 컨테이너에 필요한 커널은 공유하면서, 컨테이너 내부에는 어플리케이션 구동을 위한 라이브러리와 실행 파일만 둠으로써 이미지 용량을 대폭 감소킬 수 있게 됩니다.

 

이런 장점들을 가진 컨테이너 기술 중 하나가 도커인데요, LXC, OpenVZ 등 다른 컨테이너도 존재 하지만 현재 컨테이너 생태계에서 도커가 사실사 표준으로 사용되고 있고, 그만큼 많은 Reference/Community를 가지고 있기 때문에 시스템 운영 상 컨테이너를 고려하는 상황에서 많은 개발자/운영자 들이 Docker를 사용하게 되는 것 입니다.

 

 

참고자료:

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)