Docker
[Docker] Container의 OS vs VM의 OS
먹세
2021. 9. 25. 19:28
docker를 사용하다가 생긴 의문.
- Container 에서도 Guest OS를 사용하는데?
docker는 VM을 사용할 때 생기는 쓸데없는 자원낭비(OS의 오버헤드) 를 줄이는데 획기적이다.
docker를 쓰는 가장 큰 이유이다.
docker의 기본 구조를 생각해 보면 아래와 같다.
docker는 기본적으로 linux 위에서만 돌아간다.
Winodws와 MacOS 용 docker를 설치하면 경량화된 linux 머신이 가상화되어 구동되고, 그 위에서 docker가 구동되는 것이다.
docker를 사용하다보니 의문이 생긴다.
VM을 사용하면 OS까지 올려서 쓰기 때문에 오버헤드 때문에 docker를 사용하는 것인데,
APP을 구동하기 위한 container 에도 OS가 설치되어있고, 실제로 Ubuntu 컨테이너로 서버 세팅을 해서 사용하는 경우도 많지 않은가?
그렇다면 VM과 다를게 뭐지?
이 부분에 대해 가장 큰 차이점은 아래와 같다.
Guest OS가 VM에서는 풀로 설치해야 사용 가능하고, docker에서는 격리 개념으로 분리된다는 것.
docker에서는 Host OS(Linux) 와 다른부분만 컨테이너에 있고, 커널은 Host OS와 공유하는 방식이다.
VM | Docker | |
Host OS | 논리적 가상화 (완전 분리) | - Kernel 공유 (프로세스 공유) - Container 내에서 명령어 실행 시 실제로는 Host OS에서 실행 |
Guest OS | 풀 설치 | Host OS와 비교해서 다른부분만 Packing |
OS지원 | 모두 지원 | Linux기반의 OS만 지원 |
장점 | - 해킹 되더라도 다른 가상머신에 영향을 미치지 않음 | - 시스템 자원의 효율적 사용 - 생산성 향상 |
단점 | - 시스템 확장시 자원의 낭비 - 트래픽에 따른 분산처리가 유연하지 못함 |
- Host OS를 공유하기 때문에 Host 권한이 해킹된다면 다른 컨테이너들도 위험함 |
Guest OS 관련해서 참고한 글 :
반응형