도커(Docker)란?
도커는 Go 언어로 작성된 리눅스 컨테이너 기술을 기반으로 하는 오픈소스 가상화 플랫폼입니다. 도커는 특정 서비스를 패키징하고 배포하는 데 유용한 오픈소스 프로그램으로, 독립된 환경을 만들어 하드웨어를 효율적으로 활용하는 기술입니다. 도커는 특히 격리된 환경이 필요할 때, 즉 서비스를 배포 및 운영할 때 유용합니다. 도커를 사용해서 필요한 파일들만 이미지로 만들면 여러 대의 서버에 배포할 때 같은 이미지를 실행시켜 컨테이너로 만들면 되기 때문에 매우 편리합니다. 그리고 도커는 컨테이너 엔진으로 리눅스 커널 기능을 사용해 운영체제 위에 컨테이너를 만들고, 도커 자체는 서비스의 컨테이너를 관리하는 데몬으로 실행하게 됩니다.
주요 개념
- 컨테이너 : 호스트 운영체제의 기능을 사용하며 프로세스를 격리해 독립된 환경을 만듭니다.
- 가상화 : 물리적 하드웨어를 효율적으로 활용하기 위해 가상의 머신을 만드는 기술입니다.
도커의 유래
도커라는 이름은 부두에서 컨테이너를 관리하는 작업에서 유래했습니다. 이름에 맞게 도커는 컨테이너를 다룰 수 있는 도구입니다. 도커를 사용하면 이미지를 실행시켜 컨테이너로 만들거나, 컨테이너를 다시 이미지로 만드는 작업을 쉽게 할 수 있습니다.
도커의 주요 장점
- 경량화된 컨테이너 기술 : 가상 머신보다 경량화된 형태로, 호스트 OS의 커널을 공유하면서도 독립된 환경을 제공합니다.
- 성능 향상 : 기존 가상화 기술과 달리 하이퍼바이저를 거치지 않아 성능 손실을 최소화합니다.
- 배포 효율성 : 경량화된 이미지로 인해 배포가 용이합니다.
도커 엔진(Docker Engine)
도커 엔진은 컨테이너를 생성하고 관리하는 주체로, 도커의 핵심 프로젝트입니다. 다양한 기능을 제공하여 컨테이너를 제어할 수 있습니다. 컨테이너에는 소프트웨어 실행에 필요한 모든 것이 포함되어 있어, 가상머신에 비해 용량이 적습니다.
가상머신(Virtual Machine)
가상화는 하나의 하드웨어를 여러 개의 가상 머신으로 분할하여 효율적으로 사용할 수 있게 해주는 기술입니다. 가상 머신들은 각각 독립된 환경에서 작동하며, 이를 통해 자원 활용도를 극대화할 수 있습니다.
주요 개념 및 구성 요소
- 가상화 기술 : 하나의 하드웨어를 여러 개의 가상 머신으로 분할하여 효율적으로 사용하는 기술입니다.
- Host OS : 기본이 되는 운영체제입니다.
- Guest OS : 가상 머신으로 구현된 독립된 운영체제입니다.
- 하이퍼바이저(Hypervisor) : 물리적 하드웨어 위에서 여러 개의 가상 머신을 생성하고 관리하는 소프트웨어입니다.
가상화 기술의 역사와 하이퍼바이저
도커 이전에도 가상화 기술은 널리 사용되었습니다. 기존의 가상화 기술은 하이퍼바이저를 이용하여 여러 개의 운영체제를 하나의 호스트에서 생성하고 사용할 수 있게 했습니다. 하이퍼바이저는 물리적 하드웨어 위에서 여러 개의 가상 머신을 실행할 수 있도록 관리합니다. 가상 머신으로는 주로 우분투(Ubuntu)나 CentOS 같은 운영체제가 사용되었습니다. 하이퍼바이저에 의해 생성되고 관리되는 운영체제를 Guest OS라고 하며, 각 Guest OS는 완전히 독립된 공간과 자원을 할당받아 작동합니다.
가상 머신의 장단점
- 장점
- 완벽한 OS를 생성할 수 있습니다.
- 여러 운영체제를 하나의 하드웨어에서 동시에 실행할 수 있습니다.
- 단점
- 하이퍼바이저를 거쳐야 하기 때문에 일반 호스트에 비해 성능 손실이 발생할 수 있습니다.
- 가상 머신은 Guest OS를 실행하기 위해 필요한 라이브러리와 커널 등을 포함해야 하므로 이미지의 크기가 매우 큽니다. 이러한 대용량 이미지를 애플리케이션으로 배포하는 것은 부담이 될 수 있습니다.
도커와 가상 머신의 비교
가상 머신의 단점을 극복하기 위해 컨테이너 기술이 도입되었습니다. 도커는 가상 머신보다 경량화된 형태로, 호스트 OS의 커널을 공유하면서도 독립된 환경을 제공하여 성능 손실을 최소화하고 배포 효율성을 높인 기술입니다.
- 경량화 : 도커는 가상 머신보다 가벼워, 호스트 OS의 커널을 공유하면서도 독립된 환경을 제공합니다.
- 성능 향상 : 하이퍼바이저를 거치지 않기 때문에 성능 손실이 적습니다.
- 배포 효율성 : 도커 이미지는 가상 머신 이미지보다 작고, 빠르게 배포할 수 있습니다.
도커 사용의 주요 이유
- 애플리케이션 독립성 보장 : 호스트 운영체제 및 다른 컨테이너와 독립된 환경을 제공하여 애플리케이션 간 충돌을 방지합니다.
- 일관된 실행 환경 제공 : 환경에 관계없이 동일한 조건에서 애플리케이션을 실행할 수 있습니다.
- 간편한 배포 및 실행 : 도커 이미지를 생성하여 운영 서버에 업로드하면, 도커 컨테이너에서 바로 애플리케이션을 실행할 수 있습니다.
- 유연한 확장성 : 컨테이너를 이용하면 동일한 애플리케이션을 쉽게 확장할 수 있습니다.
- MSA 구조로의 전환 용이 : 하나의 컨테이너가 하나의 기능을 제공하는 모듈로 구성할 수 있어 마이크로서비스 아키텍처로의 전환이 용이합니다.
- 환경 무관 신속한 배포 : 환경에 영향을 받지 않고 애플리케이션을 신속하게 배포 및 확장할 수 있습니다.
'🐬Docker[도커]' 카테고리의 다른 글
[Docker] 도커 파일, 도커 이미지 그리고 도커 컨테이너 :) (0) | 2024.06.14 |
---|