과거에는 VM(가상머신)과 Container(컨테이너)라는 개념이 존재하지 않았고, 그에
따라 필요한 만큼 물리적으로 서버를 새로 구축하여 연결하는 작업을 했었다.
각 서비스가 요구하는 환경설정이 있고, 특정 서비스가 다른 서비스가 필요로 하는 환경과 충돌이
일어날 수 있기 때문에 물리적으로 분리를 시켜 구축을 했었던 것이다.
이로 인해 나온 것들이 Virtual Machine(가상머신)과 Containerization(컨테이너화)이다.
위 두 가지를 통하여 서로 격리된 환경에서 애플리케이션을 구동할 수 있는 것이다.
가상머신과 컨테이너의 가장 큰 차이점은 OS의 공유하는 데 있어 차별점을 둔다.
1. Virtual machine (가상머신)
가상머신은 생성할 때마다 Guest OS를 새로 설치해야 하기 때문에
각 OS 설치에 따른 컴퓨터 자원을 점유하기 때문에 자원 소모가 크다는 단점을 가지고 있다.
2. Container (컨테이너)
컨테이너는 OS를 공유한다는 점에서 VM의 단점을 극복할 수 있었다.
아래의 예시를 통하여 간략하게 볼 수 있다.
다음과 같이 Host의 OS를 공유하고 각자 격리된 환경에서 실행하는 것이다.
여기서 Kernnel 또한, 가상머신은 Guest OS를 나누어 관리를 하며
일정한 컴퓨터 자원을 점유하고 있지만
컨테이너는 OS를 공유함으로 자원을 효율적으로 관리할 수 있었고
OS의 크기가 크기 때문에 상대적으로 자원을 덜 필요로 한다는 것이 장점이다.
반응형
'Devops > Docker' 카테고리의 다른 글
[Docker] Dind (Docker in docker) / Dood(Docker out of docker) (0) | 2023.06.24 |
---|---|
[Docker] 볼륨 마운트 / 바인드 마운트 (0) | 2023.06.21 |
[Docker] 컨테이너의 Resource 사용 확인 (0) | 2023.04.17 |
[Docker] docker 명령어 시 Linux(Ubuntu) 권한 문제 해결 (0) | 2023.02.21 |