[Docker]도커란 무엇인가?(컨테이너 개념, 가상 머신과의 차이점)
컨테이너(Container)
`컨테이너(Container)`는 소프트웨어 실행을 위해 필요한 모든 것들이 담겨져 있는 독립된 실행환경이다.
컨테이너 안에는 실행할 응용 프로그램의 코드를 비롯해 Dependency, 관련 구성 파일과 각종 환경 설정 등등 필요한 모든 것이 담겨져 있기 때문에 다양한 실행 환경으로 인해 발생할 수 있는 문제들(개발환경과 배포환경의 차이로 인한 문제)을 해결할 수 있다.
다시말해, 소프트웨어 실행을 위한 준비물들을 담아놓은 패키지라고 볼 수 있다.
가상 머신(Virtual Machine)과 컨테이너의 차이점?
소프트웨어 실행을 위해서 환경을 미리 세팅해둔 독립된 유닛이라고 생각하면 가장 먼저 가상머신이 떠오르며 컨테이너의 개념과 혼동되기 시작한다. 그렇다면, 가상머신과 컨테이너를 사용하는 것에는 어떠한 차이점이 있을까?
Guest OS 설치 여부
가상머신은 자신만의 물리적인 리소스와 운영체제를 한 번에 소유하고 있는 하나의 독립적인 가상 컴퓨팅 환경이다.
가상머신을 사용하기 위해선, `하이퍼바이저`를 사용하여 하나의 물리적 자원을 여러 개의 논리적 자원으로 분리를 해주어야 한다. 각 가상머신들은 `하이퍼바이저`의 중개 하에 호스트의 물리적 리소스들을 나누어 할당받기 때문에 독립적인 하드웨어 환경 구성이 가능하다는 장점이 있으나, 전체적으로 성능이 떨어질 수밖에 없다.
반대로 컨테이너 방식의 경우 Guest OS를 설치하지 않고 Host OS를 공유하는 방식으로 작동한다. 즉, 컨테이너들이 `컨테이너 엔진(Container Engine)`을 통해 Host OS의 커널을 공유하는 방식으로 사용되기 때문에(새로운 커널이 생성되는 것이 아니기 때문에) 비교적 가벼울 수밖에 없다.
`컨테이너 엔진(Container Engine)`은 컨테이너 이미지를 사용하여 컨테이너를 생성하는 소프트웨어로, 컨테이너와 Host OS간의 중개자 역할을 수행한다.
요약
- 가상 머신을 사용하는 방식은 기존 컴퓨터 위에 가상의 컴퓨터를 여러 대 추가적으로 띄워서 사용하는 방식이고, 컨테이너를 사용하는 방식은 한 대의 컴퓨터 내부 격리된 환경에서 실행되는 일종의 프로세스(Process)이다.
- 가상머신은 하드웨어를 추상화하고, 하이퍼바이저는 운영체제를 추상화한다.
도커(Docker)
도커(Docker)는 리눅스의 응용 프로그램들을 프로세스 격리 기술을 사용하여 컨테이너(Container)로 실행하고 관리하는 오픈소스 프로젝트이다. - 위키백과
앞서 정리한 컨테이너 기술을 지원하는 다양한 프로젝트 중 가장 유명한 것이 바로 도커(Docker)인 것이다.
도커는 도커 이미지(Docker Image)라고 하는 컨테이너 실행을 위한 템플릿 기반으로 컨테이너 환경을 생성하고 이를 관리한다.
참고 자료
도커를 공부하는 초보자를 위한 안내서 1편 - 컨테이너 개념
도커(Docker) 기초 다지기 - 도커란 무엇인가? 도커(docker)와 컨테이너에 대해서 많이 들어보셨을 것입니다. 도커와 컨테이너를 쓰면 뭔가 좋은 것이 많다고는 하는데, 도대체 도커는 무엇이고 컨테
tech.ktcloud.com
도커를 공부하는 초보자를 위한 안내서 3편 - 도커 이해하기!
도커(Docker)의 정체를 알아보자. 저번 포스트에서는 컨테이너와 그 장점에 대해 공부하는 시간을 가졌습니다. 컨테이너에 대해서 감이 잡혔다면, 이제 도커에 대해 본격적으로 공부해보도록 하
tech.ktcloud.com
[Docker] Container의 Lightweight (컨테이너가 가벼운 이유)
요약 Container에 포함되는 OS 이미지에는 kernel이 없으며, host kernel을 공유하여 사용하므로 가볍다. Container의 OS와 host의 kernel이 충분히 호환되면 동작하며, 그렇지 않을 경우 동작하지 않는다. 컨테
pythaac.tistory.com
컨테이너화란 무엇인가요? - 컨테이너화 설명 - AWS
서버리스 컴퓨팅은 클라우드 공급업체가 애플리케이션을 구동하는 서버 인프라를 완전히 관리하는 클라우드 컴퓨팅 기술을 말합니다. 즉, 개발자와 조직은 클라우드 서버에서 리소스를 구성,
aws.amazon.com
Containers vs. Virtual Machines (VMs): What's the Difference? | NetApp Blog
Virtual machines and containers differ in several ways, but the primary difference is that containers provide a way to virtualize an OS so that multiple workloads can run on a single OS instance. With VMs, the hardware is being virtualized to run multiple
www.netapp.com