콘텐츠로 이동

컨테이너와 도커

도커 스터디 - 처음부터 제대로 배우는 도커/쿠버네티스 컨테이너 개발과 운영

created: 2026-1-8

last updated: 2026-1-13


컨테이너

  • 도커: 컨테이너형 가상화 기술을 기반으로 한, 컨테이너 실행 환경을 구현하는 소프트웨어
  • 컨테이너형 가상화 기술: 호스트 OS에서 파일 시스템을 나누고 새로운 파일 시스템과 애플리케이션으로 구성된 별도의 공간 구현
  • 이식성(portability): 어떤 플랫폼에서라도 동작하는 일관성
  • 커맨드 라인 도구를 컨테이버에서 호스트 OS에 영향을 미치지 않고 즉시 실행
  • 의존 관계에 있는 라이브러리나 도구를 함께 배포하여 실행 환경에 상관없이 사용
  • HTTP 부하 테스트에서 워커를 컨테이너로 준비하여 HTTP Request 증가 가능
  • 단점
    • 완전히 OS와 동일한 동작을 하지 않음
    • Linux가 아닌 환경은 컨테이너로 사용 불가

도커

도커 엔진을 구성하는 소프트웨어 3가지

  • 도커 서버 Dockerd: 컨테이너형 가상화 기술 구현을 위한 기본 애플리케이션 - 컨테이너의 실행, 관리 등 핵심 담당
  • 도커 REST API Docker REST API: 도커 서버를 조작하기 위한 인터페이스
  • 도커 CLI Docker CLI: 도커 커맨드를 구현하는 커맨드라인 애플리케이션 - 도커 REST API와 통신하며 대화식으로 도커 서버 조작

특징

  • 호스트에 의존하지 않는 실행 환경(도커 엔진에 의한 실행 환경 표준화)
  • DSL(Domain Specific Language)을 통한 컨테이너 파일 시스템 구성과 애플리케이션 배포 정의
  • 이미지 버전 관리
  • 레이어 구조를 갖는 이미지 포맷(증분 빌드 가능)
  • 커넽이너 레지스트리(이미지를 저장하는 장소)
  • 프로그래밍이 가능한 다양한 API
  • Dockerfile을 통해 컨테이너 정보를 코드로 관리
  • 코드를 베이스로 정보를 가져오거나 배포 작업 진행 -> 환경에 상관없이 동일하게 구현 가능
  • 컨테이너에 애플리케이션과 실행 환경(OS를 모방한 파일 시스템)를 함께 배포하는 방식

컨테이너 기술을 이용하는 이유

  • 불변하는 애플리케이션과 실행 환경에 대한 재현성 확보
    • 몇 번을 실행해도 같은 결과 보장
    • 특정 시점의 서버 상태를 저장하고 복제 가능(서버의 이미지)
  • 애플리케이션 구성 관리의 용이성
    • 컨테이너는 애플리케이션과 파일 시스템이 함께 들어 있는 상자
    • docker compose: 컨테이너 오케스트레이션 시스템 - 컨테이너, 의존 관계 정의 -> 동작 순서 제어
    • 여러 개 서버(노드)를 관리하는 도커 스웜docker swarm - 컨테이너 추가/삭제, 컨테이너 배치로 효율적인 자원 활용, 부하 분산 기능 제공
    • 컨테이너 오케스트레이션: 여러 노드를 연결해 컨테이너 관리 -> 쿠버네티스!
  • 환경에 상관없이 실행 가능한 높은 이식성
  • 컨테이너 기반 개발의 효율성