도커는 프로그램을 실행하기 위한 가상의 컨테이너를 만들어주는 도구입니다. 쉽게 말해, 개발자가 만든 프로그램을 어디서든 동일한 환경에서 실행할 수 있도록 해주는 마법같은 기술입니다.
what container 공식페이지에서 아래와 같이 정의합니다.
컨테이너는 소프트웨어의 표준 단위로, 애플리케이션이 실행되는데 필요한 코드와 모든 종속성을 패키징하여 환경과 상관없이 빠르고 안정적으로 실행할 수 있도록 합니다.도커 컨테이너 이미지는 코드, 실행환경, 시스템 도구, 시스템 라이브러리, 설정 등을 포함한 독립적이고 가벼운 실행 패키지입니다.
컨테이너 이미지는 실행될 때 컨테이너가 되며, 도커 컨테이너의 경우 도커 엔진에서 실행되면서 컨테이너가 활성화됩니다. 리눅스 및 윈도우 기반 어플리케이션 모두에서 사용할 수 있으며, 환경과 관계없이 동일한 방식으로 실행할 수 있습니다. 컨테이너는 소프트웨어를 실행 환경에서 격리하여 개발, 테스트, 운영 환경 간 차이로 인해 발생하는 문제를 방지할 수 있도록 합니다.
개발자들은 종종 이런 문제를 겪습니다.
도커는 이러한 문제를 해결해줍니다. 프로그램과 실행에 필요한 모든 환경을 하나의 컨테이너에 담아 어디서든 동일하게 실행할 수 있도록 만들어줍니다.
도커 컨테이너와 가상머신 모두 프로그램을 독립된 환경에서 실행할 수 있도록 해주는 기술이지만, 몇 가지 차이점이 있습니다.
비교 항목 | 컨테이너 | 가상머신 (VM) |
---|---|---|
실행 속도 | 빠름 (가벼움) | 느림 (무겁고 부팅 필요) |
OS 사용 | 호스트 OS 공유 | 각 VM마다 OS 설치 필요 |
자원 사용량 | 적음 (프로그램과 필수 요소만 포함) | 많음 (각 VM마다 OS 포함) |
실행 방식 | 호스트 OS 위에서 실행 | 하이퍼바이저(VM 관리 프로그램) 위에서 실행 |
배포 및 확장 | 빠르고 쉬움 | 상대적으로 어려움 |
즉, 컨테이너는 가상머신보다 훨씬 가볍고 빠르며, OS를 공유하기 때문에 더 적은 자원을 사용합니다. 반면 가상머신은 OS를 독립적으로 포함하고 있어 더 무겁지만, 강력한 격리 기능을 제공합니다.