[심화] 14. Docker

백하림's avatar
Jul 29, 2025
[심화] 14. Docker

🐳 Docker 정리 (개념 + 실행 구조)


🔥

✅ Docker란?

  • 컨테이너 기반 가상화 도구
  • 애플리케이션과 그 실행환경을 하나의 이미지로 패키징해서
    • OS에 종속되지 않고 어디서나 동일하게 실행할 수 있게 해줌
  • VM과 달리 커널은 공유하고, 실행 환경만 격리함 → 가볍고 빠름

✅ 도커 실행 구조

[APP + 런타임 + 종속 라이브러리] ← 컨테이너 (Container) ↓ [도커 엔진 / Docker Daemon][호스트 OS의 커널][하드웨어]
컨테이너는 가상 머신과 달리 호스트 OS 커널을 공유함
→ 즉, 커널은 하나고 그 위에 여러 컨테이너가 격리된 환경에서 실행됨

✅ 핵심 구성 요소

구성 요소
설명
이미지 (Image)
컨테이너 생성의 기반. 코드, 종속성, 설정 포함. 불변
컨테이너 (Container)
이미지를 실행한 상태. 격리된 공간에서 동작
Dockerfile
이미지를 만들기 위한 레시피. Layer 기반 빌드
Docker Daemon
컨테이너/이미지 실행 관리하는 백그라운드 프로세스
Docker CLI
개발자가 쓰는 명령어 도구 (ex. docker run)
레지스트리
이미지 저장소 (공식: Docker Hub, 사설도 가능)

✅ 컨테이너의 특징

🔥
  • 호스트 커널 공유 (리눅스 커널 기반)
  • 경량화된 가상화 (OS 전체를 포함하지 않음)
  • 격리성 보장 (네트워크, 프로세스, 파일시스템은 독립)
  • 빠른 실행 속도 (VM보다 수 초 ~ 수 십 배 빠름)
  • 이식성 보장 (어느 환경이든 똑같이 실행됨)

✅ 도커로 배포하는 전체 흐름 (윈도우 → 리눅스)

🔥
  1. 윈도우에서 개발 (SpringBoot, Node.js, Python, 등)
  1. Dockerfile 작성
  1. docker build -t myapp:1.0 . → 이미지 생성
  1. docker push myapp:1.0 → Docker Hub 업로드
  1. 리눅스 서버에서 docker pull myapp:1.0
  1. docker run -d -p 8080:80 myapp:1.0 → 실행
또는 이미지 .tar로 빌드해서 리눅스로 직접 옮길 수도 있음

✅ 도커 vs VM

항목
Docker
VM
부팅 속도
수 초
수 분
무게
경량
무거움 (전체 OS 포함)
커널
공유
개별 OS 커널 사용
이식성
높음
낮음
사용 목적
마이크로서비스, 빠른 배포
격리된 전체 OS 환경 필요 시
notion image

1. 이미지 다운로드

docker pull ubuntu

2. 컨테이너 실행 + bash 진입

docker run -it ubuntu bash
notion image

1. 컨테이너 실행

docker run -it --rm tomcat:9.0

2. 실행 중인 컨테이너 확인

docker ps

3. . 컨테이너 내부에 bash로 접속

docker exec -it 컨테이너ID bash
Share article

harimmon