Docker 란?
도커란?
Namespace, cgroups, SELinux, AppArmor 프로파일을 비롯한 다양한 리눅스 커널 기능을 AUFS와 BTRFS등의 Union 파일시스템과 깔끔하게 엮어서 이미지를 모듈방식으로 구성합니다. WORA(Write-Once-Run-Anywhere) 원칙을 실현 할 수 있고, 여러 프로세스가 협업 하는 분산 시스템을 쉽게 구축할수 있으며 확장성이 뛰어납니다. 성능이 뛰어나고 어디서나 복제할 수 있는 구조를 지원하는 동시에, 애플리케이션 개발에 중요한 네 가지 특성을 제공합니다.
- 자율성 (autonomy)
- 분산화 (decentralization)
- 병렬성 (parallelism)
- 격리성 (isolation)
마이크로서비스 아키텍처가 널리 보급되면서 도커가 더욱 부각되고 있습니다. 구글, VMWare, MS을 비롯한 대기업들이 자사의 인프라스트럭처에 도커를 활용중입니다. 마이크로서비스란 소프트웨어 시스템을 개발하고 구성하는 방법중 하나로, 각 서비스를 독립적인 배포 단위로 구성하는 아키텍처를 가지고 있고 scale up 이 아닌 부하 분산 처리 방식인 scale out 에 맞추어 설계되어 있기 때문에 독립적인 배포의 단위로 도커를 이용한 컨테이너를 선택하는 경우가 많습니다. 도커는 분산환경을 쉽게 구축할 수 있는 클라우드 서비스와 잘 어울리며, 주요 클라우드 프로바이더들은 모두 컨테이너 실행 환경을 쉽게 관리할 수 있는 서비스를 제공합니다. 아마존의 엘라스틱 컨테이너 서비스, MS의 애져 컨테이너 인스턴스, 구글의 GCP K8s 엔진 같은 서비스들이 있습니다.
도커의 목적은 컨테이너 표준화를 통해서 얻을 수 있는 장점을 IT로 가져오는 것에 있습니다. 개발자는 다양한 환경에서 테스트를 거치지 않아도 되기 때문에 개발 시간이 크게 단축되며 개발에만 집중할 수 있습니다. 도커 엔진은 컨테이너를 운영하기 위한 빠르고 간편한 인터페이스를 제하기 때문에 시스템 운영자가 관리하는 부분에 있어서도 많은 장점이 있습니다. 또, 도커 엔진을 오픈소스화 함으로써, 도커는 대형 커뮤니티로 성장 할 수 있었고, 도커 허브는 다운로드 할 수 있는 많은 양의 컨테이너 이미지를 제공하고 있습니다. 버그 수정과 기능향항 등과 관련되어, 수많은 사람들의 도움을 받아 급 성장하게 되었습니다.
도커와 VM은 모두 가상화 기술에 해당하지만, 도커는 OS를 공유하는 방식으로 컨테이너에서 구동하는 애플리케이션 수준의 격리와 보안을 제공하며, VM에 비해 리소스 사용량이 적어 성능과 효율이 뛰어 납니다. 하지만 VM을 완벽히 대체할 수는 없습니다.
도커 컨테이너의 장점
- 빠른 애플리케이션 배포
- 이식성: 도커 컨테이너는 호환성에 관련된 문제를 신경쓰지 않고도 운영할 수 있습니다.
- 쉬운 공유: 공용 리포지터리나 내부전용 사설 리포지터리를 구성해 쉽게 공유할 수 있습니다.
- 적은 자원 사용량: 도커 이미지는 크기가 작고 새로운 애플리케이션을 배포할 때 다른 컨테이너를 활용함으로써 자원 사용량도 적습니다.
- 재사용성: 도커 컨에티너의 버전을 지속적으로 이어나가기 쉽고, 언제든 이전 버전으로 돌리기도 쉽습니다. 기존에 사용하는 레이어에 담긴 컴포넌트들을 재사용할 수 있기 때문에 경량화가 가능합니다.
최신 댓글