도커

기술노트
Admin (토론 | 기여)님의 2025년 9월 6일 (토) 05:05 판 (Gemini 벌크 업로더로 자동 업로드)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

🐳 도커 (Docker)

도커컨테이너 기술을 사용하여 애플리케이션과 그 실행 환경을 패키징하고, 배포하고, 실행하기 위한 오픈소스 플랫폼입니다. 도커를 통해 개발자는 어떤 환경에서든 동일하게 동작하는 애플리케이션을 쉽게 만들고 공유할 수 있습니다.

"Build, Ship, and Run Any App, Anywhere"라는 슬로건처럼, 도커는 애플리케이션 배포의 표준으로 자리 잡았습니다.


🧱 도커의 핵심 구성 요소

  • 도커 엔진 (Docker Engine) : 도커의 핵심으로, 컨테이너를 생성하고 관리하는 역할을 합니다.
  • 도커 이미지 (Image) : 애플리케이션과 그 실행에 필요한 모든 것(코드, 라이브러리, 환경 변수 등)을 담고 있는 읽기 전용 템플릿입니다. 이 이미지를 기반으로 컨테이너가 생성됩니다.
  • 도커 컨테이너 (Container) : 도커 이미지를 실행한 인스턴스입니다. 호스트 OS와 격리된 독립적인 공간에서 애플리케이션이 실제로 동작합니다. 이미지는 템플릿이고, 컨테이너는 그 템플릿으로 찍어낸 실제 제품입니다.
  • 도커 레지스트리 (Registry) : 도커 이미지를 저장하고 공유하는 원격 저장소입니다. 대표적으로 도커 허브(Docker Hub)가 있으며, 직접 사설 레지스트리를 구축할 수도 있습니다.
  • Dockerfile : 도커 이미지를 어떻게 만들지를 정의하는 텍스트 파일입니다. 베이스 이미지, 복사할 파일, 실행할 명령어 등을 순서대로 기록하면, 도커는 이 파일을 읽어 자동으로 이미지를 생성합니다.

🤔 가상머신(VM)과의 차이

가상머신은 하드웨어 위에 호스트 OS를 설치하고, 그 위에 하이퍼바이저를 통해 여러 개의 게스트 OS를 통째로 설치하는 방식입니다. 반면, 컨테이너는 호스트 OS의 커널을 공유하면서 프로세스만 격리하므로, 훨씬 가볍고 빠르며 자원 소모가 적습니다.


💡 개발자 핵심 Point

  • 도커는 개발 환경과 운영 환경을 일치시켜 "제 컴퓨터에서는 되는데요?" 문제를 근본적으로 해결합니다.
  • 마이크로서비스 아키텍처(MSA)에서 각 서비스를 컨테이너 단위로 개발하고 배포하는 것이 일반적입니다.
  • `Dockerfile`을 작성하여 애플리케이션의 실행 환경을 코드로 관리하고, 이를 버전 관리 시스템(Git)으로 추적할 수 있습니다. (Infrastructure as Code)
  • 여러 컨테이너를 효율적으로 관리하고 조율하기 위해 쿠버네티스(Kubernetes)와 같은 컨테이너 오케스트레이션 도구를 함께 사용합니다.