지난 포스팅에서는 도커가 무엇인지, 도커가 탄생하게 된 배경은 무엇인지, 도커 이전에 어떤 노력들이 있었는지 알아보았다.
https://steady-programming.tistory.com/21
[Docker] #1 도커란 무엇인가
정리 배경 최근에 팀에서 생성하는 파이썬 프로세스를 도커 이미지로 띄우는 작업을 할당 받았다. 원래는 서버 내부에 multiprocessing.Process 모듈을 이용해서 프로세스를 생성했는데 몇몇 프로세스
steady-programming.tistory.com
이번 포스팅에서는 서버를 문제 없이 관리하기 위한 노력 중 하나였던 가상 머신과 도커를 상세히 비교하고자 한다. 비교를 통해 가상 머신에 비해서 도커가 어떤 점이 더 좋은지, 그래서 어떤 상황에서 컨테이너 기반 기술인 도커를 사용해야하는지 motivation을 확실히 짚고 넘어간다.
같은 듯 하면서도 다른 너네들
container 기반 시스템
하나의 Host OS위에 docker engine이 있고 그 위에 어플리케이션 컨테이너가 생성된다. 다시 말하면, 각각의 컨테이너는 각기 다른 OS 위에서 작동되는게 아니라 하나의 공통적인 OS에서 동작하는 것이다. 도커 공식 홈페이지에서는 이를 containers virtualize the operating system이라고 말한다. 공동의 OS에서 어플리케이션이 실행되지만 컨테이너라는 기술에 의해 각각은 분리되어 있다. Host OS를 사용하므로 vm 보다는 공간을 덜 차지한다.
virtual machines
여러 개의 vm을 가능하게 해주는 hypervisor 위에 여러 개의 vm이 띄워진다. 각각의 vm은 서로 다른 OS를 가지고 어플리케이션은 각기 다른 OS 위에서 실행된다. 하나의 서버를 여러개의 서버로 바꿔주는 역할을 하는데, 이를 공식문서에서는 abstraction of physical hardware라라고 표현한다. 각각의 vm은 OS를 비롯해 모든 것을 가지고 있기 때문에 용량이 크고 부팅하는데 시간이 오래 걸린다.
비교
Docker | VM | |
Security | 컨테이너가 하나의 os에서 동작함 > 컨테이너들끼리 공유해서는 안 되는 정보가 있으면 도커는 부적절 |
각기 다른 os에서 동작함 > 더 많은 보안을 요구하는 작업에 적절 |
Portability | guest os 필요 x > portable 함 | os 필요 > 부적절 |
Performance | scale up 하는데 더 편리함 | 자원을 더 많이 필요로 함 |
Boot-Time | 소요 시간이 적음 | 소요 시간이 많음 |
Runs on | docker engine 위에서 작동 | hypervisor 위에서 작동 |
Memory Efficiency | 가상화할 자원이 없기 때문에 효율적 | OS 전체를 로딩해야하기 때문에 비효율적 |
어떤거 써야할까
결론부터 말하자면 무조건 도커가 가상 머신보다 좋다고 말할 수는 없다. 상황에 따라서 가상 머신이 더 적합할 수도 있다. 위 비교에서 알 수 있듯이 보안이 중시되는 상황에서는 가상 머신을 쓰는게 더 적절한 선택일 것이다.
요즘에는 도커로 많이 넘어가는 추세이긴 하지만, 가상 머신과 섞어서 쓰는 회사도 많다고 한다. 다시 말해, 도커가 서버 관리 방법에 있어서 표준을 제시함으로써 강력한 툴로 부상했으나, 여전히 가상 머신을 이용해야하는 상황도 있다는 것이다.
Reference
'Devops > docker' 카테고리의 다른 글
[Docker] #5 docker-compose (0) | 2022.11.10 |
---|---|
[Docker] #4 기본 명령어 (0) | 2022.11.10 |
[Docker] #3 docker run 명령어 (0) | 2022.11.10 |
[Docker] #1 도커란 무엇인가 (0) | 2022.11.09 |
댓글