본문 바로가기
#IT 업무노트

도커 컨테이너 도커이미지 가상머신 도대체 무슨 말이야?

by 꾸미라기 2024. 1. 4.
반응형
SMALL

 

오늘의 포스팅은 도커, 컨테이너, 도커이미지, 도커 컨테이너 가상머신과 차이점, 도커 컨테이너 장점에 대해 설명하겠습니다.

 

1. 도커란?


도커(Docker)는 컨테이너 기반 가상화 플랫폼으로, 소프트웨어를 패키징하고 배포하기 위한 오픈 소스 기술입니다. 도커를 사용하면 응용 프로그램과 해당 종속성(라이브러리, 환경 설정 등)을 하나의 단일한 유닛으로 묶어 가상 환경에서 실행할 수 있습니다. 이는 응용 프로그램이 호스트 시스템과 독립적으로 실행될 수 있도록 해줍니다.

 

2. 컨테이너란?

 

도커의 핵심 개념은 컨테이너입니다. 컨테이너는 격리된 환경에서 프로세스가 실행되는 경량 가상화 단위입니다. 각 컨테이너는 필요한 모든 것을 포함하며, 호스트 시스템과 공유하는 리소스를 최소화합니다. 이를 통해 어디에서나 일관된 실행 환경을 제공하고, 배포 및 스케일링을 단순화하며, 리소스 사용을 최적화할 수 있습니다.

 

3. 도커이미지란?

 

도커 이미지(Docker image)는 도커 컨테이너를 생성하는 데 사용되는 가벼운 실행 가능한 패키지입니다. 이미지는 애플리케이션, 라이브러리, 환경 설정 및 실행 환경과 같은 모든 것을 포함하며, 이를 기반으로 도커 컨테이너가 생성됩니다. 도커 이미지는 컨테이너의 기반으로 사용되며, 이러한 이미지들은 Docker Hub 및 기타 도커 레지스트리(도커 이미지를 저장하고 공유하는 서비스)에서 쉽게 공유되고 관리됩니다.

 

4. 도커 컨테이너와 가상머신 차이점

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

도커 컨테이너

(1) 가상화 수준(Virtualization Level)
도커 컨테이너는 운영 체제 커널을 공유하며, 프로세스를 격리된 환경에서 실행합니다. 이는 호스트 시스템에서 직접 실행되며, 가상화의 수준이 가볍고 빠릅니다.

(2) 이미지(Image)
도커는 이미지를 사용하여 애플리케이션과 종속성을 패키징하며, 이를 기반으로 컨테이너를 생성합니다. 이미지는 애플리케이션 실행에 필요한 모든 것을 포함하고 있습니다.

(3) 시작 속도(Startup Time)
컨테이너는 가볍고 시작이 빠르며, 몇 초 내에 애플리케이션을 실행할 수 있습니다.

(4) 리소스 사용(Resource Usage)
호스트 시스템과 리소스를 공유하기 때문에, 가상머신에 비해 적은 메모리와 디스크 공간을 사용합니다.

가상머신

(1) 가상화 수준(Virtualization Level)
가상머신은 하이퍼바이저를 통해 운영 체제 커널을 각각의 가상 머신에 할당하며, 각 가상 머신은 독립적으로 운영체제를 실행합니다.

(2) 이미지(Image)
각 가상 머신은 전체 운영 체제 이미지를 필요로 합니다. 이는 더 크고 무겁게 될 수 있습니다.

(3) 시작 속도(Startup Time)
가상머신은 전체 운영 체제를 부팅해야 하기 때문에 상대적으로 시작이 느릴 수 있습니다.

(4) 리소스 사용(Resource Usage)
각 가상 머신은 독립적인 운영 체제를 실행하기 위해 더 많은 메모리와 디스크 공간을 필요로 합니다.

도커는 가상머신에 비해 더 가볍고 효율적인 방식으로 가상화를 제공하므로, 특히 마이크로서비스 아키텍처 및 컨테이너 오케스트레이션 도구와 함께 사용되어 많은 현대적인 애플리케이션 배포에서 널리 사용되고 있습니다.

4. 도커 컨테이너 장점

 

도커 컨테이너는 여러 가지 이점을 제공하여 소프트웨어 개발 및 배포 프로세스를 효율적으로 관리할 수 있게 해줍니다. 아래는 도커 컨테이너의 주요 장점들입니다:

(1) 일관된 환경(Consistent Environment)
도커 컨테이너는 모든 종속성과 환경 설정을 포함하므로, 어떤 환경에서도 일관된 실행 환경을 제공합니다. 개발 환경, 테스트 환경, 운영 환경 등에서 일관성 있는 동작을 보장합니다.

(2) 포터빌리티(Portability)
도커 컨테이너는 모든 종속성과 라이브러리를 포함하고 있어 이식성이 높습니다. 어디서든 동일한 컨테이너 이미지를 사용하여 애플리케이션을 실행할 수 있습니다.

(3) 빠른 배포 및 확장(Fast Deployment and Scaling)
컨테이너는 가벼워 빠르게 시작되며, 필요한 경우 쉽게 복제하여 확장할 수 있습니다. 이는 빠른 배포 및 다양한 규모에서의 애플리케이션 운영을 지원합니다.

(4) 효율적인 자원 사용(Resource Efficiency)
가상 머신에 비해 훨씬 적은 자원을 사용합니다. 여러 컨테이너는 동일한 호스트 시스템에서 실행되므로 가상화 오버헤드가 감소하고 자원을 효율적으로 활용할 수 있습니다.

(5) MSA (Microservices Architecture)
도커 컨테이너는 애플리케이션을 작은 단위로 분리하고 독립적으로 배포할 수 있도록 하여 마이크로서비스 아키텍처에 이상적입니다.

(6) 스케일링 및 로드 밸런싱(Scaling and Load Balancing)
도커 컨테이너는 가벼워 빠르게 확장 가능하며, 오케스트레이션 도구(예: Kubernetes)를 사용하여 자동으로 스케일링하고 로드 밸런싱을 수행할 수 있습니다.

(7) 빠른 롤백(Fast Rollback)
이미지를 버전으로 관리하고 변경 사항이 필요한 경우 이전 버전으로 빠르게 롤백할 수 있습니다.

(8) 개발과 운영의 분리(Separation of Concerns)
개발 환경과 운영 환경의 분리를 쉽게 할 수 있어, 개발팀과 운영팀 간의 협업이 원활하게 이루어집니다.

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

 

반응형