Docker (Why Docker?)

Bro_Jang·2024년 7월 15일
0

Docker

목록 보기
1/5
post-thumbnail

Maximilian Schwarzmüller (2024). "Docker & Kubernetes : 실전 가이드" 인터넷 강의를 바탕으로 메모, 생각한 점을 기록해보는 글입니다.

Docker, Container

  • Docker is a container technology : A tool for creating and managing containers
  • 소프트웨어 개발에서 컨테이너는 표준화된 유닛.
  • 컨테이너 내부에는 코드 실행에 필요한 버전, dependencies, 코드등을 모두 포함하고 있다.

Container의 필요성

  1. 코드가 빌드되는데 필요한 로컬 환경, 개발환경이 로컬 머신에만 설치될 수 있다.
  2. 개발 환경이 로컬에서만 실행되는 경우 배포 단계에서 문제점 발생. (버전 일치의 문제)
  3. 개발 환경까지 모두 Container 내부로 포함시킨다면, 버전 일치의 문제는 해결될 수 있다.

결론적으로 Docker는 팀, 개인, 또는 다른 프로젝트 등이 독립적이고 표준화된 애플리케이션 패키지를 만들 수 있도록 도와주는 도구이다.

Docker를 사용하면 애플리케이션과 그 의존성을 컨테이너라는 표준화된 단위로 묶어 어디서나 일관되게 실행할 수 있게 된다. 개발 환경과 운영 환경 사이의 차이를 줄이고, 배포 및 확장이 용이해진다.

기존 VM(Virtual Machine)에서의 문제점

  • 높은 자원 소모:
    VM은 각 인스턴스마다 운영 체제(OS)를 포함하고 있어, 많은 CPU, 메모리, 저장소 등의 자원을 소비한다.
    여러 VM을 실행하면 호스트 시스템의 자원 소모가 급격히 증가하여 성능 저하가 발생할 수 있다.

  • 복잡한 관리:
    VM은 개별적으로 OS 업데이트, 보안 패치 등을 관리해야 하므로 관리가 복잡하다.
    여러 VM을 운영하는 경우, 일관된 설정과 유지보수가 어렵다.

  • 애플리케이션 이식성 문제:
    VM 간에 애플리케이션을 이동하거나 배포할 때, 호스트 OS와의 호환성 문제 등이 발생할 수 있다.
    개발 환경과 운영 환경 간의 차이로 인해 예상치 못한 오류가 발생할 수 있다.

  • Overhead의 문제
    Application이 많아지고 중복이 많아진다면 많은 공간을 낭비하게 될 수도 있다.

Docker Container가 필요한 이유(De facto)

  • 효율적인 자원 사용
    Docker 컨테이너는 운영 체제의 커널을 공유하므로 VM보다 훨씬 가벼운 자원을 사용한다.
    하나의 호스트 시스템에서 더 많은 컨테이너를 실행할 수 있어 자원 효율성이 높다.

  • 일관된 환경 제공
    Docker 이미지는 모든 종속성과 설정을 포함하고 있어 어디서나 동일한 환경에서 실행할 수 있다.
    개발, 테스트, 운영 환경 간의 일관성을 유지하여 예기치 않은 오류를 줄일 수 있다.

  • 쉬운 관리 및 배포
    Docker는 컨테이너 오케스트레이션 도구(예: Kubernetes)와 함께 사용하면 대규모 애플리케이션의 배포, 관리, 확장이 간편해진다.
    CI/CD 파이프라인에서 통합하여 자동화된 배포 프로세스를 구축할 수 있다.

  • 애플리케이션 이식성
    Docker 컨테이너는 호스트 OS에 관계없이 일관된 실행 환경을 제공하므로, 다른 시스템으로의 이식이 용이하다.
    개발 환경과 운영 환경의 차이를 최소화하여 배포 시 발생할 수 있는 문제를 줄인다.

profile
개발 해봐야지

0개의 댓글

관련 채용 정보