개발 환경이 달라서 "내 컴에서는 되는데?" 하고 고생해 본 적 있으신가요? Docker를 쓰면 이 문제가 깔끔하게 해결됩니다. 이번 글에서는 Docker가 뭔지부터 설치, 핵심 명령어, Dockerfile·Docker Compose 활용, 그리고 실전 배포 팁까지 한 번에 정리해 드리겠습니다.
Docker란 무엇인가?
Docker는 리눅스 컨테이너 기술을 기반으로 애플리케이션을 격리된 환경에서 실행할 수 있게 해주는 플랫폼입니다. 가상 머신(VM)과 달리 OS 전체를 가상화하지 않고, 호스트 OS의 커널을 공유하면서 프로세스만 격리하기 때문에 훨씬 가볍고 빠릅니다.
간단히 정리하면 이렇습니다.
- 가상 머신 — 전체 OS를 올려야 해서 수 GB 용량에 부팅도 느림
- Docker 컨테이너 — 프로세스 단위 격리라서 수 MB 용량에 초 단위 실행
코드와 실행 환경을 통째로 이미지로 패키징하기 때문에 개발, 테스트, 운영 서버 어디서든 동일한 결과를 보장합니다.
Docker 설치 방법 (Windows · macOS · Linux)
Docker는 세 가지 주요 OS를 모두 지원합니다. 가장 쉬운 방법은 Docker Desktop을 설치하는 것인데요, 각 OS별 절차를 정리해 보겠습니다.
Windows 설치
- Docker Desktop 공식 다운로드 페이지에서 설치 파일을 받습니다.
- 설치 중 WSL 2 백엔드 사용 옵션을 체크합니다. (Windows 10 이상 필수)
- 설치 완료 후 재부팅하고, 터미널에서
docker --version으로 확인합니다.
macOS 설치
- 위와 동일하게 Docker Desktop을 다운로드합니다. (Apple Silicon, Intel 모두 지원)
- .dmg 파일을 열고 Applications 폴더로 드래그합니다.
- 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를 실제로 쓸 때 가장 많이 사용하는 명령어들을 정리했습니다. 이것만 외워두면 일상 개발에서 80%는 커버됩니다.
이미지 관련 명령어
| 명령어 | 설명 |
|---|---|
docker pull nginx | Docker 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> | 컨테이너 로그 확인 |
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 파일 하나로 모든 서비스를 정의하고 한 번에 관리할 수 있습니다.
위 예시처럼 웹 서버(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 실전 워크플로우
개발부터 배포까지의 전체 흐름은 다음과 같습니다.
- 코드 작성 — 평소처럼 앱을 개발합니다.
- Dockerfile 작성 — 빌드 방법을 정의합니다.
- 이미지 빌드 —
docker build -t myapp:1.0 . - 로컬 테스트 —
docker run -d -p 3000:3000 myapp:1.0으로 확인합니다. - 레지스트리 푸시 —
docker push myrepo/myapp:1.0으로 이미지를 업로드합니다. - 서버 배포 — 운영 서버에서
docker compose up -d로 배포합니다.
Docker Hub는 이미지를 저장하고 공유하는 공식 레지스트리입니다. nginx, postgres, node 같은 공식 이미지를 바로 받아 쓸 수도 있고, 본인이 만든 이미지를 올려둘 수도 있습니다.
Docker 실전 팁 & 주의사항
마지막으로, Docker를 쓸 때 꼭 기억해야 할 베스트 프랙티스를 정리합니다.
- .dockerignore 파일 작성 —
node_modules,.git등을 빌드 컨텍스트에서 제외하면 이미지 크기가 대폭 줄어듭니다. - Alpine 이미지 활용 —
node:20-alpine처럼 경량 이미지를 쓰면 수백 MB → 수십 MB로 줄일 수 있습니다. - 레이어 캐싱 최적화 — 변경이 적은 레이어(예: package.json 복사)를 먼저 배치하면 재빌드가 훨씬 빨라집니다.
- 볼륨으로 데이터 관리 — 컨테이너를 삭제하면 내부 데이터도 사라지므로, DB 데이터 등은 반드시 볼륨(
-v)을 사용하세요. - 정기적인 정리 —
docker system prune -a로 미사용 이미지·컨테이너를 주기적으로 정리해서 디스크 공간을 확보하세요.
마치며
Docker는 처음엔 개념이 낯설 수 있지만, 한 번 익히고 나면 개발 생산성이 눈에 띄게 올라갑니다. 환경 차이로 인한 버그가 사라지고, 배포 프로세스가 단순해지며, 팀원 누구나 같은 환경에서 작업할 수 있게 됩니다.
이 글에서 다룬 내용만 숙지하면 실무에서 Docker를 활용하는 데 무리가 없을 겁니다. 더 깊이 파고들고 싶다면 Docker 공식 문서를 참고해 보세요.
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
'개발 도구 & 팁' 카테고리의 다른 글
| VS Code 확장 프로그램 추천 2026 — 생산성 확 올려주는 필수 10가지 (0) | 2026.03.25 |
|---|---|
| GIT사용법 완벽 가이드 — 설치부터 브랜치 전략까지 한방 정리 (2026) (0) | 2026.03.21 |
| 무료 API 테스트 도구 추천 TOP 5 — Postman 대안 포함 (0) | 2026.03.11 |
| 무료 디자인 시스템 추천 TOP 7 — React 개발자를 위한 2026년 가이드 (0) | 2026.03.07 |
| GitHub Copilot 무료 대안 추천 TOP 5 — 돈 안 내고 AI 코딩하는 법 (2026) (0) | 2026.03.04 |