이 글은 아래 자료를 참고하여 작성되었습니다.
Udemy [Kubernetes For the Absolute Beginners]
https://www.redhat.com/en/topics/containers/containers-vs-vms
1. 컨테이너는 왜 필요할까?
컨테이너는 아래의 문제점을 획기적으로 해결해 준다!
- 개발하려는 애플리케이션에 포함된 모든 서비스에서 사용하려는 OS와 호환되어야 한다 (compatibility)
- 각 서비스에서 사용하려는 라이브러리와의 의존성문제를 해결해야 한다. 각 서비스에서 같은 라이브러리의 다른 버전을 필요로 할 수 있고, 버전 업그레이드를 진행할 때마다 이러한 의존관계에 문제가 없는지 계속 확인해야 한다.
- 새로운 개발자가 합류할 때마다 복잡한 환경설정에 시달린다.
2. 컨테이너란?
컨테이너는 독립된 환경이다. 컨테이너는 모두 독립적인 프로세스, 서비스, 네트워크 인터페이스, 마운트를 가질 수 있다.
컨테이너는 같은 OS 커널을 공유하는데, 해당 OS에 기반한 모든 종류의 OS를 띄울 수 있다.
ex) Linux Machine위에서는 Linux계열의 컨테이너만 띄울 수 있다.
[참고] OS (Operating System)
모든 OS는 OS 커널(Kernel)과 소프트웨어의 집합으로 구성된다. 커널은 기반하는 hardware와 통신하는 역할을 수행하는데, 같은 OS라면 모두 같은 커널을 가진다. 소프트웨어에는 user Interface, drivers, compilers, file managers, developer tools 등이 포함된다.
ex) Linux OS들은 모두 같은 Linux Kernel을 사용하고, 소프트웨어 집합에 따라 Ubuntu, CentOS, Fedora 등으로 구분된다.
3. 컨테이너 vs 가상머신
가상머신 (Virtual Machine) | 컨테이너 (Container) | |
OS | VM은 모두 자신만의 독립된 OS를 가진다 | 컨테이는 Host OS의 커널을 공유한다 |
Boot Up | 시작하는데 최소 몇 분이 소요된다 | 몇 초안에 완료된다 |
Resource Usage | VM은 상대적으로 무겁기에, disk를 비롯한 자원을 더 많이 사용한다 | 컨테이너는 상대적으로 가볍고, 더 적은 리소스로 구동가능하다 |
Isolation | 서로에게 완전히 격리되어 있다 | 커널을 공유하므로, 상대적으로 덜 격리되어 있다. |
4. 컨테이너 vs 이미지
- 컨테이너(Container): running instance
- 이미지(Image): template (library dependencies, infrastructures, settings, ...)
'Kubernetes' 카테고리의 다른 글
6. Core Concepts - pod (0) | 2024.06.24 |
---|---|
5. Introduction - Minikube (1) | 2024.06.24 |
4. Introduction - Kubernetes with YAML (1) | 2024.06.24 |
3. Introduction - YAML (0) | 2024.06.18 |
2. Kubernetes Overview - orchestration (0) | 2024.06.16 |