Docker 기본 개념

2020. 10. 26. 13:52cloud&platform

 

application을 위한 하나의 독립된 가상화 플랫폼. Container 안에 application을 넣고, 필요 라이브러리, 시스템 도구 등을 넣어 문을 걸어 잠그면, 이 application은 Container 안에서 독립적으로 실행 된다.

이것이 왜 좋으냐고 한다면, 이 컨테이너 속은 언제나 같음을 보장하며, 이 동일한 플랫폼을 판화 찍듯이 쉽게 생성할 수 있기 때문이다.

즉, Docker를 사용하면 시스템 환경에 구애받지 않고 애플리케이션을 신속하게 배포 및 확장할 수 있으며 코드가 문제없이 실행될 것임을 확신할 수 있다는 것이다.

 

이렇게 얘기하면, 대개는 기존의 서버를 VM으로 쪼개 쓰는 것과 무엇이 다른가를 비교하곤 한다.

VM vs Docker

 

일단, docker는 소프트웨어 플랫폼이다. VM을 구성하든 안하든지간에 어떠한 호스트머신 안에서 Container를 생성하는 것은 빠르다. 유능한 시스템 관리자에게 새 VM을 준비해 달라고 하는 것과 비교할 수 없게 빠르다. 명령어만 치면 되니깐.

물론 docker가 배포될 호스트머신은 준비되어야 하지만, 논의의 요점은 그게 아니다. 바로 application 구동을 위한 환경을 구성하는 것을 준비하는 것이 요점이다. 이것은 정말 비교할 수 없게 빠르다. 다음과 같은 이유로.

 

·VM : 서버에 어떤 라이브러리가 설치되었는지에 대한 히스토리를 관리하여야 한다. 분명 초기 배포 버전과 다를 것이므로

·Docker : 구성된 이미지를 카피해 간다. 서버에 특정 라이브러리를 설치했다면 그 버전이 서버의 이니셜 버전이 될 것이다.

 

여기에는 바로 이 말에서 연관되는 개념이 있다. 바로 하드웨어다. VM은 하드 웨어를 쪼개고, 그 위에 OS를 쪼개고, 그래서 완벽하게 독립된 하나의 호스트 머신을 만드는 것이다. 그래서 그 위에 application을 구축하는 것은 우리가 과거에 늘 하던 새 서버에 환경 구축과 같은 개념이다.

그런데 docker는 하드웨어 윗단의 OS를 공유하는 개념으로 접근한다. 필요한 OS 필수 커널은 공유 하고, application 만을 위한 라이브러리와 관련 시스템도구를 박스로 감싸는 형태가 되는 것이며, 이 박스는 얼마든지 복사가 가능한 구조로 접근한 것이다.

 

이렇게 되면, application을 위한 표준화된 환경 구축이 되어 똑같은 환경을 매우 쉽게 재현한다.

또한, docker는 이 카피능력외에 또 하나의 이점이 있다. 바로 호스트의 리소스를 완전 효율적으로 우려먹을 수 있다. 왜? 컨테이너 카피가 쉽기 때문에, 하나의 호스트에 다수의 application을 쉽게 배포할 수 있고, 쉽게 리소스상태를 확인 할 수 있으며, 안되겠다 싶으면 또 쉽게 뺄 수도 있고, 다른 호스트로 쉽게 수평확장도 할 수가 있다.

바로 이러한 기술적 이점 때문에, 마이크로 서비스가 더 탄력을 받는것 같다. 그리고 이러한 효율성으로 인해 클라우드 업체들은 docker를 환영한다. 그리고 이미 이들에 의해 안정성은 계속 검증 받고 있다.

 

'cloud&platform' 카테고리의 다른 글

Kubernetes Dashboard 설치  (0) 2020.12.01
Kafka 기본 개념  (0) 2020.11.09
Kubernetes 설치 가이드 - v1.11.3  (0) 2020.10.23
Spring Core - IoC, DI, Context And Bean  (0) 2020.10.22
Spring Overview  (0) 2020.10.20