<aside>
🐋 Docker란 Go언어로 작성된 리눅스 컨테이너 기반으로하는 오픈소스 가상화 플랫폼으로 0.9버전 부터는 직접 개발한 libcontainer 컨테이너를 사용하고 있다.
</aside>
Docker는 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징하며, 컨테이너에는 라이브러리, 시스템 도구 등 소프트웨어를 실행하는 데 필요한 모든 것이 포함되어 있다.
<aside>
❓ VM 가상화 플랫폼 vs Docker 가상화 플랫폼
</aside>
- Virtual machine 환경은 Host OS 위에 가상화를 위한 Hypervisor 엔진과 그 위에 Guest OS를 올려 용한다. 이는 가상화된 하드웨어 위에 OS가 올라가는 형태로 거의 완벽하게 Host와 분리된다.
- 컨테이너 기반 가상화는 Docker 엔진 위에 Application 실행에 필요한 바이너리만 올라간다.

- OS 가상화는 Host OS와 완전히 분리되어, Host OS위에 또 다른 Guest OS를 올리기 때문에 무겁고 느릴수 밖에 없다.
- 하지만 컨테이너 기반 가상화는 Host OS 그리고 Docker 엔진위에서 필요한 바이너리와 라이브러리를 통하여 동작한다. Host 커널 위 새로운 OS가 동작하는게 아니고 단순히 프로세스를 격리시키기 때문에 가볍고 빠르게 동작한다. → CPU나 메모리를 프로세스가 필요한 만큼만 사용하기 때문에 자원의 낭비또한 적다.
컨테이너를 사용하는 것은 가상 머신을 생성하는 것이 아니라 Host OS가 사용하는 자원을 분리하여 여러 환경을 만들 수 있도록 하는 것입니다.
<aside>
🔥 DOCKER의 장점은 단지 빠른 가상화를 제공하는 것이 아니다.
</aside>
1. 더 많은 소프트웨어를 더 빨리 제공
- Docker를 사용하면 환경에 구애받지 않고 애플리케이션을 신속하게 배포 및 확장할 수 있다.
2. 운영 표준화
- 작은 컨테이너식 애플리케이션을 사용하면 손쉽게 배포하고, 문제를 파악하고, 수정을 위해 롤백할 수 있다.