Docker는 애플리케이션을 개발하고 배포하며 실행하기 위한 오픈 플랫폼입니다. 애플리케이션 코드와 실행에 필요한 런타임, 라이브러리, 설정 등을 이미지로 패키징하고, 이를 격리된 프로세스인 컨테이너로 실행합니다.

Docker 컨테이너는 호스트 운영체제의 커널을 공유하면서 namespace를 통해 프로세스, 네트워크, 파일 시스템 등을 격리하고, cgroup을 통해 CPU와 메모리 같은 자원 사용량을 제어합니다. 따라서 애플리케이션마다 전체 운영체제를 설치하지 않고도 서로 분리된 실행 환경을 만들 수 있습니다.

Docker를 사용할 때의 주요 장점은 다음과 같습니다.

  • 일관된 실행 환경: 개발, 테스트, 운영 환경에서 같은 이미지를 사용하므로 환경 차이로 인한 문제를 줄일 수 있습니다.
  • 이식성과 재현성: 이미지에 애플리케이션 실행 환경이 함께 정의되므로 Docker를 실행할 수 있는 환경이라면 같은 방식으로 배포하기 쉽습니다.
  • 빠른 실행과 높은 자원 효율: 별도의 게스트 운영체제를 실행하는 가상머신보다 일반적으로 크기가 작고 시작이 빠르며, 하나의 호스트에서 더 많은 애플리케이션을 실행할 수 있습니다.
  • 배포와 확장의 편의성: 이미지를 배포 단위로 사용하므로 동일한 컨테이너를 추가하거나 제거하는 방식으로 애플리케이션을 확장하기 쉽습니다.
  • CI/CD와의 결합: 동일한 이미지를 빌드, 테스트, 배포 단계에서 사용할 수 있어 배포 과정을 표준화하고 자동화하기 좋습니다.

결국 Docker의 핵심 장점은 애플리케이션과 실행 환경을 하나의 단위로 묶어, 어디서 실행하더라도 일관된 결과를 얻도록 돕는다는 점입니다. 다만 컨테이너의 영속 데이터, 네트워크, 보안, 이미지 크기 등은 별도로 적절하게 설계해야 합니다.

출처 및 참고자료