화. 8월 12th, 2025

D: 🚀 도커(Docker)가 왜 필요할까요? 개발자라면 “내 컴퓨터에서는 되는데…”라는 말 한 번쯤 들어보셨죠? 도커는 이런 문제를 해결해주는 컨테이너 기반 가상화 플랫폼입니다.

  • 전통적 방식 : 가상머신(VM)은 무거운 OS 전체를 가상화
  • 도커 방식 : 경량의 컨테이너로 애플리케이션과 의존성만 패키징

예시 비교
VM(5GB) vs Docker 컨테이너(50MB) → 도커가 100배 가볍습니다!


📥 1단계: 도커 설치하기 (각 OS별 방법)

Windows 사용자

  1. Docker Desktop 공식 사이트 접속
  2. “Get Docker” 버튼 클릭
  3. 설치 파일 실행 후 WSL 2 설치 유도 (Windows 10/11 필수)
    wsl --install

Mac 사용자

# Homebrew로 간편 설치
brew install --cask docker

Linux (Ubuntu) 사용자

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

✅ 설치 확인

docker --version
# Docker version 20.10.17, build 100c701

🛠 2단계: 첫 컨테이너 실행해보기

간단한 Nginx 웹서버 실행

docker run -d -p 8080:80 --name my-nginx nginx
  • -d : 백그라운드 실행
  • -p 8080:80 : 호스트 8080포트 ↔ 컨테이너 80포트 연결
  • --name : 컨테이너 이름 지정

실행 확인
브라우저에서 http://localhost:8080 접속 → nginx 기본 페이지 확인! ✅


📦 3단계: 이미지와 컨테이너 이해하기

이미지 vs 컨테이너

  • 이미지 : 실행 템플릿 (예: 우분투, MySQL 등)
  • 컨테이너 : 이미지를 실행한 인스턴스

주요 명령어 모음

# 이미지 다운로드
docker pull ubuntu:20.04

# 실행 중인 컨테이너 확인
docker ps

# 모든 컨테이너 확인 (종료된 것 포함)
docker ps -a

# 컨테이너 중지/삭제
docker stop my-nginx
docker rm my-nginx

🧩 4단계: 직접 Dockerfile 만들어보기

간단한 Node.js 앱 예제

  1. 프로젝트 폴더 생성 후 app.js 작성

    const http = require('http');
    const server = http.createServer((req, res) => {
    res.end('Hello Docker!');
    });
    server.listen(3000);
  2. Dockerfile 작성 (확장자 없음!)

    FROM node:14
    WORKDIR /app
    COPY package*.json ./
    RUN npm install
    COPY . .
    EXPOSE 3000
    CMD ["node", "app.js"]
  3. 이미지 빌드 & 실행

    docker build -t my-node-app .
    docker run -p 3000:3000 my-node-app

💡 도커 활용 팁 5가지

  1. docker-compose.yml로 여러 컨테이너 한번에 관리
  2. docker logs [컨테이너명]으로 로그 확인
  3. docker exec -it [컨테이너] bash로 컨테이너 내부 접속
  4. Docker Hub에서 공식 이미지 활용 (mysql, redis 등)
  5. .dockerignore 파일로 불필요한 파일 제외

🎉 축하합니다! 이제 당신은 도커의 기본을 마스터했습니다.
👉 다음 단계:

  • Docker Compose 학습
  • Kubernetes로 컨테이너 오케스트레이션
  • CI/CD 파이프라인에 도커 통합

궁금한 점은 댓글로 남겨주세요! 여러분의 첫 도커 컨테이너 사진도 공유해보세요 😊 #Docker #DevOps

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다