[도커 #3] 도커 작동원리

[도커 #3] 도커는 내부에서 어떻게 작동할까?
도경원's avatar
Jul 29, 2025
[도커 #3] 도커 작동원리

1. 커널(Kernel)이란

운영체제의 핵심으로, 다음을 담당한다:
  • CPU, 메모리, 파일 시스템, 입출력 장치 등 자원 관리
  • 하드웨어와 소프트웨어 사이의 다리 역할
  • 항상 메모리에 상주, 컴퓨터가 켜질 때부터 작동
도커는 이 커널을 공유하며, 위에서 사용자 공간만 가상화하는 구조임.
notion image

2. 도커는 “진짜 플랫폼 전환 도구”가 아니다

  • 도커는 새로운 운영체제를 부팅하거나, 커널을 바꾸는 게 아니다.
  • 도커는 호스트 OS의 커널을 그대로 사용하고,
  • 그 위에 “다른 환경처럼 보이게 하는 격리 공간(User Space)”를 만든다.
즉, 도커는 실제로는 호스트 커널을 공유하며, 속이기 기술(Fake Environment)을 사용하는 것이다.

3. 도커는 어떻게 격리 환경을 흉내낼까 ?

컨테이너는 커널을 공유한다

  • 리눅스 호스트에선 리눅스 컨테이너만
  • 윈도우 호스트에선 윈도우 컨테이너만
🚫 커널 자체는 절대 바뀌지 않는다.

User Space를 격리해 실행

  • 전체 OS를 가상화하지 않음
  • 오직 격리된 프로세스 공간(User Space)만 만들어서 라이브러리, 바이너리만 덮어씌움
다양한 이미지(ubuntu, alpine, python)를 써도 전부 호스트 OS의 커널 위에서만 실행
notion image

4. 내 컴퓨터가 Window or MacOS 일때

1. 내 컴퓨터가 Windows일 때

상황

  • OS: Windows 10/11
  • 실행: docker run -it ubuntu

내부 작동 원리

  1. Docker Desktop이 자동으로 WSL2(Windows Subsystem for Linux) 기반 리눅스 커널을 실행
  1. 해당 커널 위에서 Ubuntu 컨테이너가 돌아감
  1. Ubuntu처럼 보이는 격리 환경이지만,
    1. 실제로는 WSL2 리눅스 커널이 모든 시스템 호출을 처리
  1. 사용자는 마치 리눅스 우분투를 사용하는 것처럼 CLI에서 작업 가능

시각 요약

🪟 Windows (NT 커널) └─ Docker Desktop └─ WSL2 (리눅스 커널) └─ Ubuntu 컨테이너

2. 내 컴퓨터가 macOS일 때

상황

  • OS: macOS (Darwin 기반 커널)
  • 실행: docker run -it ubuntu

내부 작동 원리

  1. Docker Desktop이 자동으로 LinuxKit 기반 경량 가상머신(VM) 실행
  1. 해당 VM 내부에 진짜 리눅스 커널이 있음
  1. 그 위에서 Ubuntu 컨테이너가 실행됨
  1. 사용자는 마치 리눅스를 쓰는 것처럼 터미널에서 명령어 입력 가능

시각 요약

🍎 macOS (Darwin 커널) └─ Docker Desktop └─ LinuxKit VM (리눅스 커널) └─ Ubuntu 컨테이너

표로 비교

항목
Windows
macOS
커널
Windows NT
Darwin (BSD 계열)
리눅스 커널 제공 방식
WSL2 (내장 리눅스 커널)
LinuxKit (경량 VM)
도커 컨테이너 실행 방식
WSL2 위에 리눅스 컨테이너 실행
VM 위에 리눅스 컨테이너 실행
사용자 시점 경험
리눅스처럼 보이는 CLI 환경
리눅스처럼 보이는 CLI 환경

도커는 “실제 운영체제를 교체하지 않고”, 각 OS 위에 리눅스 커널 환경을 잠깐 띄워서 격리된 컨테이너를 실행시킨다.Windows는 WSL2로, macOS는 경량 VM으로 이걸 구현한다.
Share article

Gyeongwon's blog