0.
1. 도커가 생성되기 이전의 배포방식
도커를 이해하기 위해서는 먼저 컨테이너라는 개념이 생겨나기 이전의 배포환경에 대해 알아야한다.
전통적인 배포방식과, 그를 보완하는 가상머신으로의 발전과정을 보며 가상머신의 이점에 대해 먼저 살펴보자
- Traditional Deployment ( 전통적인 배포 방식 )

전통적인 배포환경에서는 가상화 기술이 없었기 때문에 한 컴퓨터에 모든 프로그램을 실행했다.
때문에 각 프로그램마다 필요한 리소스 ( 메모리, CPU등 ) 을 제한할수 없어 하드웨어의 사용이 비효율적으로 일어났으며 특정 응용프로그램에서 너무 많은 부하가 생겨 컴퓨터가 중지되고, 실행중인 모든 프로그램이 중단되는 상황이 발생할수 있다.
또한 서버를 일일히 실행시켜야 하기 때문에 트래픽이 몰릴때 서버를 증설하는데 시간적, 물리적으로 많은 비용이 들었다.
- Virtual Machine ( 가상화 기반의 배포 방식 )

이를 보완하기 위해, 가상머신(VM)이 등장했다.
VM은 말그대로 가상의 컴퓨터를 만드는 기술로, 단일 서버에 여러개의 VM을 실행할수 있어
한대의 컴퓨터로 여러대의 다른 컴퓨터를 실행시키듯 서버를 운영할수가 있게 된다.
- 가상머신의 장점
- 각각의
VM
은 실행에 필요한 모든 환경을 포함하고 있어 다른 환경( 다른 OS )로도 쉬운 이식이 가능 - 프로그램이 명확하게 구분 되어 서로의 실행 상태에 영향을 받지 않는다.
- 가상머신의 단점
- OS를 포함하고 있어 확실한 격리가 가능하지만, 용량이 매우 무겁다.
- 프로그램 실행을 위해 가상머신을 만들고 새로운 운영체제를 실행해야 하기 때문에 부팅속도가 매우 느리다.
가상화 기술이 생겨나며 프로그램의 운영체제에 대해 종속받지 않고 배포를 할수 있게되었고,
프로그램을 포함한 하드웨어 자체를 포장한 상태로 실행할수 있어 개발한 서버를 배포용 PC로 옮기는 과정이 매우 간편해졌다.
또한 이 포장한 가상머신을 얼마든지 늘릴수 있어 서버를 증설하는데에도 큰 도움이 되었다.
하지만 프로그램을 가상머신을 단위로 저장하기 때문에 운영체제 커널의 전체를 포함하고 있어
매우 무겁다는 단점이 있다.
여기서 두가지의 확장방향을 생각해볼수 있다.
1. 더 가볍게 가상화를 할수 없을까 ?
2. 더 빠르게 실행할수 없을까 ?
2. 도커 컨테이너의 탄생

위 두가지 문제점을 해결할수 있는 컨테이너 가상화 기술이 나오게 되었다.
가상화된 하드웨어와 OS 포함시켜야해 하드웨어 수준에서 포장해야하는 기존의 가상머신과 달리
컨테이너는 하나의 프로그램 실행에 필요한 라이브러리, 패키지를 운영체제 수준에서 포장하기 때문에
가볍고 빠르게 실행하는것이 가능해졌다.
위의 그림으로 예를 들면, App A와 App B가 같은 프로그램이라고 할때
딱 프로그램에 필요한 최소한의 자원만큼만 포장해 굳이 같은 OS와 하드웨어 자원을 또 할당할 필요가 없어지는 셈이다.
- 컨테이너 기반의 배포 방식

- 컨테이너 가상화의 장점
- 호스트 운영체제와 커널을 공유하기 때문에 CPU,메모리 등을 지정한 만큼만 사용하고, 자원을 효율적으로 사용할수 있음. 동시에 실행속도가 가상머신에 비해 훨씬 빠름
- 각 컨테이너는 실행에 필요한 OS, 파일및 라이브러리를 포함하고 있어 다른 환경( 다른 OS )로도 쉬운 이식이 가능
- 컨테이너 가상화의 단점
- 가상머신보다 격리가 덜하기 때문에 한개의 컨테이너에 문제가 생겼을때 커널을 공유하는 다른 컨테이너에 영향을 미칠수 있음
- 프로그램 실행을 위해 새로운 운영체제를 실행해야 하기 때문에 부팅속도가 매우 느리다.
'docker' 카테고리의 다른 글
클라우드 IaaS•PaaS•SaaS란 (1) | 2022.12.27 |
---|
0.
1. 도커가 생성되기 이전의 배포방식
도커를 이해하기 위해서는 먼저 컨테이너라는 개념이 생겨나기 이전의 배포환경에 대해 알아야한다.
전통적인 배포방식과, 그를 보완하는 가상머신으로의 발전과정을 보며 가상머신의 이점에 대해 먼저 살펴보자
- Traditional Deployment ( 전통적인 배포 방식 )

전통적인 배포환경에서는 가상화 기술이 없었기 때문에 한 컴퓨터에 모든 프로그램을 실행했다.
때문에 각 프로그램마다 필요한 리소스 ( 메모리, CPU등 ) 을 제한할수 없어 하드웨어의 사용이 비효율적으로 일어났으며 특정 응용프로그램에서 너무 많은 부하가 생겨 컴퓨터가 중지되고, 실행중인 모든 프로그램이 중단되는 상황이 발생할수 있다.
또한 서버를 일일히 실행시켜야 하기 때문에 트래픽이 몰릴때 서버를 증설하는데 시간적, 물리적으로 많은 비용이 들었다.
- Virtual Machine ( 가상화 기반의 배포 방식 )

이를 보완하기 위해, 가상머신(VM)이 등장했다.
VM은 말그대로 가상의 컴퓨터를 만드는 기술로, 단일 서버에 여러개의 VM을 실행할수 있어
한대의 컴퓨터로 여러대의 다른 컴퓨터를 실행시키듯 서버를 운영할수가 있게 된다.
- 가상머신의 장점
- 각각의
VM
은 실행에 필요한 모든 환경을 포함하고 있어 다른 환경( 다른 OS )로도 쉬운 이식이 가능 - 프로그램이 명확하게 구분 되어 서로의 실행 상태에 영향을 받지 않는다.
- 가상머신의 단점
- OS를 포함하고 있어 확실한 격리가 가능하지만, 용량이 매우 무겁다.
- 프로그램 실행을 위해 가상머신을 만들고 새로운 운영체제를 실행해야 하기 때문에 부팅속도가 매우 느리다.
가상화 기술이 생겨나며 프로그램의 운영체제에 대해 종속받지 않고 배포를 할수 있게되었고,
프로그램을 포함한 하드웨어 자체를 포장한 상태로 실행할수 있어 개발한 서버를 배포용 PC로 옮기는 과정이 매우 간편해졌다.
또한 이 포장한 가상머신을 얼마든지 늘릴수 있어 서버를 증설하는데에도 큰 도움이 되었다.
하지만 프로그램을 가상머신을 단위로 저장하기 때문에 운영체제 커널의 전체를 포함하고 있어
매우 무겁다는 단점이 있다.
여기서 두가지의 확장방향을 생각해볼수 있다.
1. 더 가볍게 가상화를 할수 없을까 ?
2. 더 빠르게 실행할수 없을까 ?
2. 도커 컨테이너의 탄생

위 두가지 문제점을 해결할수 있는 컨테이너 가상화 기술이 나오게 되었다.
가상화된 하드웨어와 OS 포함시켜야해 하드웨어 수준에서 포장해야하는 기존의 가상머신과 달리
컨테이너는 하나의 프로그램 실행에 필요한 라이브러리, 패키지를 운영체제 수준에서 포장하기 때문에
가볍고 빠르게 실행하는것이 가능해졌다.
위의 그림으로 예를 들면, App A와 App B가 같은 프로그램이라고 할때
딱 프로그램에 필요한 최소한의 자원만큼만 포장해 굳이 같은 OS와 하드웨어 자원을 또 할당할 필요가 없어지는 셈이다.
- 컨테이너 기반의 배포 방식

- 컨테이너 가상화의 장점
- 호스트 운영체제와 커널을 공유하기 때문에 CPU,메모리 등을 지정한 만큼만 사용하고, 자원을 효율적으로 사용할수 있음. 동시에 실행속도가 가상머신에 비해 훨씬 빠름
- 각 컨테이너는 실행에 필요한 OS, 파일및 라이브러리를 포함하고 있어 다른 환경( 다른 OS )로도 쉬운 이식이 가능
- 컨테이너 가상화의 단점
- 가상머신보다 격리가 덜하기 때문에 한개의 컨테이너에 문제가 생겼을때 커널을 공유하는 다른 컨테이너에 영향을 미칠수 있음
- 프로그램 실행을 위해 새로운 운영체제를 실행해야 하기 때문에 부팅속도가 매우 느리다.
'docker' 카테고리의 다른 글
클라우드 IaaS•PaaS•SaaS란 (1) | 2022.12.27 |
---|