Intro
오라클을 설치시 윈도우 환경에서는 VM을 사용했는데 검색해보니 맥 m1환경에서는 docker를 사용하는것을 알 수 있었다.
Docker은 들어본적은 많지만 잘 몰라서 이참에 정확히 찾아보고 VM과의 차이점을 정리해보았다.
도커(Docker)란?
- 도커는 컨테이너를 이용한 가상화 기술을 제공하는 오픈소스 프로젝트
- 컨테이너는 코드와 그 코드가 동작하는 데 필요한 환경을 패키징한 것
- 여러 개의 컨테이너는 동일한 운영체제 커널을 공유하면서, 격리된 공간에서 동작하며 독립적인 프로세스로 실행됨
- 컨테이너 이미지는 코드, 라이브러리, 의존성 및 실행 환경 등을 담고 있음
- 도커 이미지는 레지스트리에서 다운로드 받거나, Dockerfile을 이용하여 직접 빌드 가능
- 이미지로부터 컨테이너를 생성하여 실행할 수 있음
- 컨테이너는 가상 머신보다 가벼우며 빠르게 생성되며, 호스트 운영체제와 바로 연결되어 있어 가상 머신보다 직관적이고 간단한 설정 가능
도커(Docker)와 가상머신(VM)의 차이
도커와 VM은 둘 다 가상화 기술로서, 하나의 서버에서 여러 개의 환경을 동시에 운영할 수 있게 한다. 하지만 그 구현 방식과 가상화 수준에서 차이가 있다.
VM은 하이퍼바이저라는 소프트웨어를 이용하여 하나의 물리적 서버를 여러 개의 가상 서버로 분할한다. 각각의 가상 서버는 자체적인 운영체제와 애플리케이션을 가지고 있기 때문에, VM에서 실행되는 애플리케이션은 호스트 컴퓨터의 운영체제와 독립적이다. 이로 인해 VM은 더욱 견고하고 안전한 환경을 제공할 수 있는 장점이 있지만, 운영체제와 애플리케이션을 가상화하기 때문에 더 많은 하드웨어 자원을 소모하고 성능 저하의 가능성이 있는 단점이 있다.
반면에 도커는 애플리케이션을 실행하기 위해 필요한 파일과 라이브러리, 의존성 등을 패키지화하여 컨테이너라는 단위로 관리한다. 컨테이너는 호스트 운영체제와 커널을 공유하고, 다른 컨테이너와 격리된 공간에서 동작한다. 이로 인해 컨테이너는 가볍고 빠르게 실행되며, 더욱 효율적인 자원 활용이 가능하다. 또한, 컨테이너 간의 상호작용이나 컨테이너의 삭제와 같은 작업도 간편하게 수행할 수 있다.
결론적으로, VM은 더욱 견고하고 안전한 환경을 제공할 수 있지만, 자원 소모가 더 많고 실행 속도가 느리다는 단점이 있다. 반면에 도커는 가볍고 빠르며, 효율적인 자원 활용이 가능하다는 장점이 있지만, 일부 애플리케이션에 대한 호환성 문제가 있을 수 있다. 따라서 각각의 기술을 사용할 때는 상황에 맞게 적절히 선택해야 한다.
도커(Docker) | 가상 머신(Virtual Machine) |
---|---|
- 애플리케이션과 의존성을 함께 패키지화하는 앱 레벨의 가상화 기술 | - 하드웨어 가상화 기술 |
- 호스트 운영 체제의 커널을 공유하여 각각 격리된 공간에서 실행됨 | - 각각의 가상 머신은 자체 운영 체제, 애플리케이션, 라이브러리 및 기타 의존성을 포함함 |
- 가상 머신에 비해 훨씬 빠르고 가볍고, 많은 어플리케이션을 실행할 수 있음 | - 각 가상 머신은 독립적이므로 서로 영향을 주지 않음 |
- 컨테이너 이미지는 일반적으로 몇십 MB의 크기 | - 가상 머신 이미지는 일반적으로 수 GB의 크기 |
- 실행 중인 컨테이너의 스냅샷을 저장하여 나중에 재사용 가능 | - 실행 중인 가상 머신의 스냅샷을 저장하여 나중에 재사용 가능 |
Docker 장단점
Docker 장점
- 도커는 더 가볍고 빠르게 실행된다.
- 도커는 호스트 운영체제와 컨테이너의 운영체제가 동일하기 때문에 더 많은 컨테이너를 한 대의 서버에서 실행할 수 있다.
- 컨테이너의 생성, 시작, 중지, 삭제 등이 더 빠르다.
- 컨테이너 이미지는 작고 더 빠르게 배포할 수 있다.
Docker 단점
- 도커는 호스트 운영체제의 기능을 이용하기 때문에 호스트와 컨테이너 운영체제가 동일해야 한다.
- 컨테이너를 생성하면 동작할 때 일부 보안 취약점을 유발할 수 있다.
- 컨테이너에서 실행되는 애플리케이션이 완벽하게 격리되지 않을 수 있다.
VM 장단점
VM 장점
- 호스트 운영체제와 완전히 분리되어 실행된다.
- 다양한 운영체제에서 실행될 수 있다.
VM 단점
- 더 많은 메모리와 디스크 공간을 필요로 하며 더 느리게 실행된다.
- 복잡하고 설정이 어렵다.
- 성능 저하 및 가용성 문제가 발생할 수 있다.
참조 자료
- honie. “Docker와 VM의 차이점.” 내일을 위해, TISTORY, 2022, https://hu-nie.tistory.com/entry/Docker-%EC%99%80-VM%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90.
- Priya, Bala. “Docker vs Virtual Machine (VM) – Key Differences You Should Know.” FreeCodeCamp.Org, freeCodeCamp.org, 4 Oct. 2022, https://www.freecodecamp.org/news/docker-vs-vm-key-differences-you-shouldknow/#:~:text=The%20key%20difference%20between%20the,of%20the%20host%20operating%20system.
- “What Is a Container? Docker.” Docker, https://www.facebook.com/docker.run, 11 Nov. 2021, https://www.docker.com/resources/what-container/#/package_software.