1 도커란
리눅스 컨테이너를 만들고 사용할 수 있도록 하는 컨테이너화 기술
도커를 사용하면 컨테이너를 매우 가벼운 모듈식 가상 머신처럼 다룰 수 있음. 또한 컨테이너를 구축, 배포, 복사하고 한 환경에서 다른 환경으로 이동하는 등 유연하게 사용할 수 있어, 애플리케이션을 클라우드에 최적화하도록 지원
출처: https://www.redhat.com/ko/topics/containers/what-is-docker
2 가상화와 도커
2.1 가상화
클라우드 컴퓨팅에서 가상화는 운영체제(OS) 내에 가상 머신을 생성하는 하드웨어 가상화를 의미
2.2 가상화하는 이유
일반적으로 OS를 실행하려면, 각 OS를 전용 물리 서버에서 실행해야 함. OS 1개 당 물리적 서버 1대가 필요하므로 여러 OS를 동시에 실행해야 하는 경우에는 OS를 모두 실행할 수 있도록 여러 대의 서버가 필요. 그런데 여러 운영 체제를 실행하는 것은 비용이 많이 듦. 물리적 서버를 대량 구입해야 할 뿐만 아니라 구입한 서버의 운영 및 유지보수 비용도 증가하기 때문
가상화를 이용하면 OS를 물리서버의 하드웨어로부터 분리할 수 있으므로 Windows나 Linux와 같은 여러 OS(게스트 OS)를 하나의 물리 서버(호스트 OS를 포함)에서 동시에 실행할 수 있음. 가상화를 통해 물리 서버의 구매 비용, 운영 및 유지보수 시간/비용 등을 절약할 수 있음
2.3 가상 머신과 도커 컨테이너
가상 머신 | 도커 컨테이너 |
- 하이퍼바이저 소프트웨어를 통해 가상 머신(게스트 OS)을 호스트와 격리하고 필요에 따라 동적으로 각 가상 머신에 컴퓨팅 리소스를 할당 |
|
- 일반 호스트에 비해 성능 손실이 있음: 각종 시스템 자원을 가상화하고 독립된 공간을 생성하는 작업은 하이퍼바이저를 만드시 거치기 때문 - 가상 머신의 이미지의 크기가 크며(수 기가바이트), 이를 애플리케이션으로 배포하기는 부담스러움: 게스트 운영체제를 사용하기 위한 라이브러리, 커널 등을 전부 포함하기 때문에 가상 머신을 배포하기 위한 이미지로 만들었을 때 이미지의 크기 또한 커지기 때문 |
- 성능 손실이 거의 없음: 가상화된 공간을 생성하기 위해 리눅스의 자체 기능인 chroot, namespace, cgroup을 사용함으로써 프로세스 단위의 격리 환경을 만들기 때문 - 가상 머신에 비해 이미지의 용량의 크기가 작고, 컨테이너를 이미지로 만들어 배포하는 시간이 가상 머신에 비해 빠름: 컨테이너에 필요한 커널은 호스트의 커널을 공유해 사용하고, 컨테이너 안에는 애플리케이션을 구동하는 데 필요한 라이브러리 및 실행 파일만 존재하기 때문 |
출처
- https://www.alibabacloud.com/ko/knowledge/what-is-virtualization
- https://www.vmware.com/kr/solutions/virtualization.html
- https://wikibook.co.kr/docker-kube/
3 도커를 시작해야 하는 이유
- 애플리케이션의 개발과 배포가 편해짐
- 도커 컨테이너는 호스트 OS 위에서 실행되는 격리된 공간이기 때문에, 독립된 개발 환경을 보장받을 수 있음
- 서비스 개발 시의 개발환경(패키지, 라이브러리 등)을 도커 이미지로 만들어 전달하기만 하면, 다운받는 서버에서 별도로 개발환경을 설정할 필요가 없이 서비스를 실행할 수 있음. 서비스를 개발했을 때 사용했던 환경을 다른 서버에서도 컨테이너로서 똑같이 복제할 수 있기 때문에 개발/운영 환경의 통합이 가능해짐.
- 가상 머신의 이미지와 달리 커널을 포함하고 있지 않기 때문에 이미지 크기가 크지 않다. 또한 도커는 이미지 내용을 레이어 단위로 구성하며, 중복되는 레이어를 재사용할 수 있어서 애플리케이션의 배포 속도가 매우 빨라짐
- 여러 애플리케이션의 독립성과 확장성이 높아짐
- 서비스의 기능이 복잡해지고 거대해질수록 소프트웨어 자체의 확장성과 유연성이 줄어들어 모놀리스 구조보다는 마이크로 서비스 구조가 적합
- 마이크로 서비스 구조는 여러 모듈을 독립된 형태로 구성하기 때문에 언어에 종속되지 않고 변화에 빠르게 대응할 수 있으며, 각 모듈의 관리가 쉬워진다는 장점이 있음
- 컨테이너는 수 초 내로 생성, 시작이 가능할 뿐만 아니라 여러 모듈에게 독립된 환경을 동시에 제공할 수 있기 때문에 마이크로 서비스 구조에서 가장 많이 사용되고 있는 가상화 기술
'인프라' 카테고리의 다른 글
9. DockerFile (0) | 2021.03.14 |
---|---|
7. 도커 이미지 (0) | 2021.03.03 |
4. 도커 네트워킹 (0) | 2021.03.02 |
3. 도커 볼륨 (0) | 2021.03.02 |
2. 도커 기본 명령어 (0) | 2021.03.02 |