Published on

Docker 완벽 가이드: 개념, 설치 방법, VM과 차이점

Authors
  • avatar
    Name
    devnmin
    Twitter

Docker란? 🐳

Docker는 애플리케이션을 컨테이너화하여 배포 및 실행하는 플랫폼입니다. 가상 머신(VM)과 달리 OS 전체를 가상화하지 않고, 애플리케이션 실행에 필요한 환경만 분리하여 경량화된 실행이 가능합니다.

1. Docker의 핵심 개념 🚀

컨테이너(Container)

  • OS 커널을 공유하며 독립적인 실행 환경을 제공
  • 가벼운 프로세스로 실행되어 빠르고 효율적
  • 애플리케이션과 그 의존성을 함께 패키징

이미지(Image)

  • 컨테이너를 실행하기 위한 템플릿
  • 불변(immutable)하며 여러 개의 컨테이너에서 재사용 가능

Dockerfile

  • 컨테이너 이미지를 빌드하기 위한 설정 파일
  • 명령어 기반으로 이미지의 환경을 정의

Docker Hub

  • 공식 및 사용자 정의 컨테이너 이미지를 공유하는 레지스트리
  • docker pull 명령어로 쉽게 이미지 다운로드 가능

2. Docker 설치하기 🛠️

2.1 Linux(Ubuntu)에서 Docker 설치

# 기존 패키지 제거
sudo apt remove docker docker-engine docker.io containerd runc

# 패키지 업데이트 및 필수 패키지 설치
sudo apt update
sudo apt install -y ca-certificates curl gnupg

# Docker 공식 GPG 키 추가
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.asc > /dev/null
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Docker 저장소 추가
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
  https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Docker 패키지 설치
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Docker 실행 확인
sudo systemctl enable --now docker
docker --version

2.2 Windows에서 Docker 설치

  1. Docker 공식 웹사이트에서 Docker Desktop for Windows 다운로드
  2. 설치 파일 실행 후 Docker 설치 진행
  3. Docker Desktop 실행 후 WSL2 활성화 설정
  4. PowerShell에서 docker --version 명령어로 확인

2.3 macOS에서 Docker 설치

  1. Docker 공식 웹사이트에서 Docker Desktop for Mac 다운로드
  2. .dmg 파일을 실행 후 설치 진행
  3. docker --version 명령어로 확인

설치 후 테스트

docker run hello-world

3. Docker와 VM의 차이점 ⚖️

항목Docker (컨테이너)VM (가상 머신)
실행 속도매우 빠름상대적으로 느림
리소스 사용가볍고 효율적무겁고 많은 자원 필요
OS 의존성호스트 OS 커널 공유게스트 OS가 필요
격리 수준프로세스 단위전체 OS 단위
사용 사례마이크로서비스, CI/CD다양한 OS 실행, 완전한 격리

Docker는 경량화된 애플리케이션 실행을 목표로 하는 반면, VM은 완전한 OS 환경 제공이 필요할 때 적합합니다.


4. Docker를 활용한 기본 컨테이너 실행 예제 📌

# nginx 컨테이너 실행
docker run -d -p 8080:80 nginx
  • -d: 백그라운드 실행
  • -p 8080:80: 호스트의 8080 포트를 컨테이너의 80포트에 매핑

웹 브라우저에서 http://localhost:8080에 접속하여 Nginx 실행 확인 가능.


결론 🎯

Docker는 빠르고 경량화된 애플리케이션 배포를 가능하게 하며, 가상 머신(VM)보다 가볍고 효율적입니다. 하지만, 완전한 OS 격리가 필요한 경우 VM이 적합할 수도 있습니다. 프로젝트의 요구사항에 따라 적절한 기술을 선택하세요!

유용한 자료 📚

더 자세한 Docker 활용법은 Docker 초급 가이드를 참고하세요! 🚀