개발 도구 & 팁

Docker 사용법 총정리 — 설치부터 배포까지 완벽 가이드 (2026)

DevOriJin 2026. 3. 18. 14:41
반응형

개발 환경이 달라서 "내 컴에서는 되는데?" 하고 고생해 본 적 있으신가요? Docker를 쓰면 이 문제가 깔끔하게 해결됩니다. 이번 글에서는 Docker가 뭔지부터 설치, 핵심 명령어, Dockerfile·Docker Compose 활용, 그리고 실전 배포 팁까지 한 번에 정리해 드리겠습니다.

 

Docker란 무엇인가?

Docker는 리눅스 컨테이너 기술을 기반으로 애플리케이션을 격리된 환경에서 실행할 수 있게 해주는 플랫폼입니다. 가상 머신(VM)과 달리 OS 전체를 가상화하지 않고, 호스트 OS의 커널을 공유하면서 프로세스만 격리하기 때문에 훨씬 가볍고 빠릅니다.

 

Docker와 가상 머신 비교 인포그래픽

 

간단히 정리하면 이렇습니다.

  • 가상 머신 — 전체 OS를 올려야 해서 수 GB 용량에 부팅도 느림
  • Docker 컨테이너 — 프로세스 단위 격리라서 수 MB 용량에 초 단위 실행

코드와 실행 환경을 통째로 이미지로 패키징하기 때문에 개발, 테스트, 운영 서버 어디서든 동일한 결과를 보장합니다.

 

Docker 공식 홈페이지

 

Docker 설치 방법 (Windows · macOS · Linux)

Docker는 세 가지 주요 OS를 모두 지원합니다. 가장 쉬운 방법은 Docker Desktop을 설치하는 것인데요, 각 OS별 절차를 정리해 보겠습니다.

 

OS별 Docker 설치 방법 인포그래픽

 

Windows 설치

  1. Docker Desktop 공식 다운로드 페이지에서 설치 파일을 받습니다.
  2. 설치 중 WSL 2 백엔드 사용 옵션을 체크합니다. (Windows 10 이상 필수)
  3. 설치 완료 후 재부팅하고, 터미널에서 docker --version으로 확인합니다.

 

Docker Desktop 제품 페이지

 

macOS 설치

  1. 위와 동일하게 Docker Desktop을 다운로드합니다. (Apple Silicon, Intel 모두 지원)
  2. .dmg 파일을 열고 Applications 폴더로 드래그합니다.
  3. Docker 앱을 실행하면 메뉴바에 고래 아이콘이 뜹니다.

Linux (Ubuntu) 설치

Linux에서는 Docker Engine을 직접 설치합니다.

# 패키지 업데이트
sudo apt update

# 필요 패키지 설치
sudo apt install -y ca-certificates curl gnupg

# Docker 공식 GPG 키 등록
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.asc > /dev/null

# Docker 리포지토리 추가 & 설치
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# 일반 사용자 권한 추가
sudo usermod -aG docker $USER

 

Docker 공식 설치 가이드 문서

 

Docker 핵심 명령어 정리

Docker를 실제로 쓸 때 가장 많이 사용하는 명령어들을 정리했습니다. 이것만 외워두면 일상 개발에서 80%는 커버됩니다.

 

Docker 핵심 명령어 인포그래픽

 

이미지 관련 명령어

명령어설명
docker pull nginxDocker Hub에서 nginx 이미지 다운로드
docker images로컬에 저장된 이미지 목록 확인
docker rmi <이미지ID>이미지 삭제
docker build -t myapp .현재 디렉토리 Dockerfile로 이미지 빌드

 

컨테이너 관련 명령어

명령어설명
docker run -d -p 80:80 nginx백그라운드에서 포트 매핑 후 실행
docker ps실행 중인 컨테이너 목록
docker ps -a전체 컨테이너 목록 (중지 포함)
docker stop <컨테이너ID>컨테이너 중지
docker rm <컨테이너ID>컨테이너 삭제
docker exec -it <ID> /bin/bash실행 중인 컨테이너 내부 접속
docker logs <컨테이너ID>컨테이너 로그 확인

 

Docker CLI 레퍼런스 문서

 

Dockerfile 작성법

Dockerfile은 이미지를 만들기 위한 레시피입니다. 어떤 베이스 이미지를 쓸지, 어떤 파일을 복사할지, 어떤 명령을 실행할지를 순서대로 적으면 됩니다.

 

Dockerfile 작성 예시 인포그래픽

 

핵심 지시자를 정리하면 다음과 같습니다.

  • FROM — 베이스 이미지 지정 (예: node:20-alpine은 경량 리눅스 기반 Node.js)
  • WORKDIR — 컨테이너 내부 작업 디렉토리 설정
  • COPY — 호스트 파일을 컨테이너로 복사
  • RUN — 빌드 시 실행할 명령어 (패키지 설치 등)
  • EXPOSE — 외부에 노출할 포트 선언
  • CMD — 컨테이너 시작 시 실행할 기본 명령

 

예를 들어 Node.js 웹 앱을 컨테이너로 만들려면:

FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install --production
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]

이후 docker build -t my-node-app . 명령으로 이미지를 빌드하고, docker run -d -p 3000:3000 my-node-app으로 실행하면 끝입니다.

 

Docker Compose 사용법

실제 프로젝트에서는 웹 서버, 데이터베이스, 캐시 등 여러 컨테이너를 동시에 운영해야 하는 경우가 많습니다. 이때 Docker Compose를 사용하면 docker-compose.yml 파일 하나로 모든 서비스를 정의하고 한 번에 관리할 수 있습니다.

 

Docker Compose 사용법 인포그래픽

 

위 예시처럼 웹 서버(Node.js) + 데이터베이스(PostgreSQL)를 구성하고, docker compose up -d 한 줄로 전부 실행합니다. 종료할 때는 docker compose down으로 정리하면 됩니다.

자주 쓰는 Docker Compose 명령어:

  • docker compose up -d — 모든 서비스 백그라운드 실행
  • docker compose down — 모든 서비스 중지 및 네트워크 정리
  • docker compose logs -f — 모든 서비스 로그 실시간 확인
  • docker compose ps — 서비스 상태 확인
  • docker compose build — 이미지 재빌드

 

Docker 실전 워크플로우

개발부터 배포까지의 전체 흐름은 다음과 같습니다.

 

Docker 실전 워크플로우 인포그래픽

 

  1. 코드 작성 — 평소처럼 앱을 개발합니다.
  2. Dockerfile 작성 — 빌드 방법을 정의합니다.
  3. 이미지 빌드docker build -t myapp:1.0 .
  4. 로컬 테스트docker run -d -p 3000:3000 myapp:1.0으로 확인합니다.
  5. 레지스트리 푸시docker push myrepo/myapp:1.0으로 이미지를 업로드합니다.
  6. 서버 배포 — 운영 서버에서 docker compose up -d로 배포합니다.

 

Docker Hub 이미지 레지스트리

 

Docker Hub는 이미지를 저장하고 공유하는 공식 레지스트리입니다. nginx, postgres, node 같은 공식 이미지를 바로 받아 쓸 수도 있고, 본인이 만든 이미지를 올려둘 수도 있습니다.

 

Docker 실전 팁 & 주의사항

마지막으로, Docker를 쓸 때 꼭 기억해야 할 베스트 프랙티스를 정리합니다.

 

Docker 실전 팁 인포그래픽

 

  • .dockerignore 파일 작성node_modules, .git 등을 빌드 컨텍스트에서 제외하면 이미지 크기가 대폭 줄어듭니다.
  • Alpine 이미지 활용node:20-alpine처럼 경량 이미지를 쓰면 수백 MB → 수십 MB로 줄일 수 있습니다.
  • 레이어 캐싱 최적화 — 변경이 적은 레이어(예: package.json 복사)를 먼저 배치하면 재빌드가 훨씬 빨라집니다.
  • 볼륨으로 데이터 관리 — 컨테이너를 삭제하면 내부 데이터도 사라지므로, DB 데이터 등은 반드시 볼륨(-v)을 사용하세요.
  • 정기적인 정리docker system prune -a로 미사용 이미지·컨테이너를 주기적으로 정리해서 디스크 공간을 확보하세요.

 

마치며

Docker는 처음엔 개념이 낯설 수 있지만, 한 번 익히고 나면 개발 생산성이 눈에 띄게 올라갑니다. 환경 차이로 인한 버그가 사라지고, 배포 프로세스가 단순해지며, 팀원 누구나 같은 환경에서 작업할 수 있게 됩니다.

이 글에서 다룬 내용만 숙지하면 실무에서 Docker를 활용하는 데 무리가 없을 겁니다. 더 깊이 파고들고 싶다면 Docker 공식 문서를 참고해 보세요.

 


✨ 자동화가 필요하신가요?

SNS/유튜브 자동 포스팅, AI 자동화 구축 — 맞춤 상담 가능합니다.

👉 크몽에서 의뢰하기

📱 인스타: @dev_orijin

 

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

반응형