전지적라온시점
도커(Docker)란 무엇인가? 본문
728x90
반응형
SMALL
도커란?
도커(Docker)는 리눅스 컨테이너 기술(LXC)을 표준화·자동화한 애플리케이션 실행 플랫폼이다. 애플리케이션 실행 환경을 이미지로 패키징하고, 이를 컨테이너 단위로 배포·운영함으로써 환경 일관성과 배포 효율성을 극대화한다. DevOps, MSA 구조, CI/CD 파이프라인에서 사실상 기본 인프라 표준으로 채택된다.
- 컨테이너 기반 가상화의 본질
도커의 핵심은 OS 가상화이다.
하이퍼바이저 기반 VM은 각각 별도의 OS가 필요하지만, 컨테이너는 호스트 OS 커널을 공유하며 프로세스 단위로 격리된다.
- Namespace: 프로세스를 논리적으로 분리(파일 시스템, PID, 네트워크 등)
- cgroups(Control Groups): CPU, 메모리 등 자원 사용량 제한
- UnionFS: 레이어 기반 파일 시스템으로 이미지 효율적 관리
이 구조 덕분에 컨테이너는 VM 대비 경량이며 실행 속도가 압도적으로 빠르다.
- 이미지(Image)의 구조적 특징
도커 이미지는 단순 패키지가 아니라 불변(Immutable) 레이어 구조로 설계되어 있다.
- 상위 레이어는 변경 불가
- 컨테이너 실행 시 Copy-on-Write 방식으로 쓰기 가능한 레이어를 생성
- 동일한 이미지 레이어를 여러 컨테이너가 공유 가능 → 디스크 사용 최소화
→ 이 불변성 덕분에 배포·롤백·버전 관리가 안정적으로 수행된다.
- 컨테이너(Container)의 동작 구조
컨테이너는 “이미지 + 실행 설정(RunConfig)”으로 구성되며, 내부적으로는 단순 프로세스다.
- PID 1로 실행되고 자체 프로세스 트리를 형성
- 자체 파일 시스템·네트워크 네임스페이스 제공
- 외부와 격리되지만 필요 시 port mapping, volume mounting 등으로 확장 가능
컨테이너는 스타트 → 종료 → 삭제 까지 lifecycle이 명확하고 관리가 용이하다.
- 도커의 등장 배경
도커는 애플리케이션 환경 문제를 근본적으로 해결하기 위한 표준으로 자리 잡았다.
- 환경 종속성 문제
- “내 로컬에서는 잘 되는데 서버에서는 안 된다” 문제 제거
- 개발·운영 환경 표준화
- 동일 이미지 기반으로 환경 불일치 제거
- MSA 트렌드 확산
- 각 서비스 단위를 하나의 컨테이너로 배치
- CI/CD 자동화 요구 증가
- 빌드 → 이미지 패키징 → 배포 → 롤백 일관성 확보
- 도커의 장점(핵심 요약)
- 속도: 초단위 기동
- 경량성: VM 대비 최소 자원
- 이식성: 이미지 기반의 완전한 환경 재현
- 확장성: MSA·오케스트레이션(Kubernetes)와 자연스럽게 결합
- 운영 편의성: 패키징·버전 관리·롤백 체계화
728x90
반응형
LIST