도커(Docker) 완벽 가이드: 컨테이너 기술의 모든 것 🐳🌐
🔍 도커란 무엇인가?
컨테이너 기반 가상화 기술로, 애플리케이션을 종속성과 함께 패키징하여 어디서나 실행할 수 있게 해주는 오픈소스 플랫폼입니다.
> 💡 전통적 가상화(VM) vs 도커
> – VM: 하드웨어 가상화 → 무거움(GB 단위)
> – 도커: OS 커널 공유 → 가볍고 빠름(MB 단위)
> (이미지: VM과 도커 구조 비교)
✨ 도커 핵심 개념
1️⃣ 이미지(Image)
- 실행 가능한 읽기 전용 템플릿 (예:
ubuntu:22.04
,nginx:latest
) - 레이어(Layer) 구조로 구성되어 효율적 관리 가능
2️⃣ 컨테이너(Container)
- 이미지를 실행한 격리된 프로세스
docker run -d -p 8080:80 --name my_nginx nginx # NGINX 컨테이너 실행
3️⃣ 도커 파일(Dockerfile)
- 이미지 빌드를 위한 설계도
FROM python:3.9 WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . . CMD ["python", "app.py"]
4️⃣ 도커 허브(Docker Hub)
- 공개 이미지 저장소 (예: hub.docker.com)
(이미지: 도커 허브 인터페이스)
⚙️ 도커 아키텍처
- 도커 데몬(Dockerd): 백그라운드 서비스
- 도커 클라이언트: 사용자 명령어 처리 (
docker run
등) - 레지스트리: 이미지 저장소 (Docker Hub, Private Registry)
🛠️ 설치부터 실습까지
1️⃣ 설치 방법 (Ubuntu 예시)
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
2️⃣ 기본 명령어 체크리스트
명령어 | 설명 |
---|---|
docker pull nginx |
이미지 다운로드 |
docker ps -a |
모든 컨테이너 목록 |
docker exec -it [컨테이너] bash |
실행 중 컨테이너 접속 |
docker logs [컨테이너] |
로그 확인 |
3️⃣ 실습: Node.js 앱 컨테이너화
Dockerfile
FROM node:18
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]
빌드 및 실행
docker build -t my-node-app . # 이미지 빌드
docker run -p 3000:3000 my-node-app # 컨테이너 실행
🚀 도커 컴포즈(Docker Compose)
다중 컨테이너 애플리케이션 관리
# docker-compose.yml
version: '3.8'
services:
web:
image: nginx:alpine
ports:
- "80:80"
db:
image: postgres:14
environment:
POSTGRES_PASSWORD: mysecretpass
docker-compose up -d # 서비스 시작
📌 도커 사용 시 주의사항
- 컨테이너는 무상태(Stateless)
- 데이터 유지를 위해 볼륨(Volume) 사용 필수
docker run -v /host/path:/container/path mysql
- 데이터 유지를 위해 볼륨(Volume) 사용 필수
- 보안 설정
root
권한 최소화 →USER
지시어 사용
- 이미지 최적화
- 멀티스테이지 빌드로 크기 축소
FROM golang:1.20 AS builder # 빌드 단계... FROM alpine:latest COPY --from=builder /app/binary . # 최종 이미지에는 빌드 결과만 포함
- 멀티스테이지 빌드로 크기 축소
💡 도커의 혁신적 가치
- 개발/운영 환경 일관성 → “내 로컬에서는 되는데…” 문제 해결 ✨
- CI/CD 파이프라인 핵심 요소 (Jenkins, GitLab CI 연동)
- 클라우드 네이티브 생태계 기반 (Kubernetes, AWS ECS 등)
> 🎯 “도커는 현대 소프트웨어 개발의 필수 도구로,
> 애플리케이션 배포의 패러다임을 완전히 바꿨습니다!”
🔮 도커 학습 리소스
- 공식 문서 – 가장 정확한 정보원 💯
- Play with Docker – 온라인 실습 환경
- 도커 커뮤니티 – GitHub, Stack Overflow
> 🚀 지금 바로 도커를 시작하세요!
> bash > docker run hello-world # 첫 컨테이너 실행! >
(GIF: 도커 컨테이너 실행 흐름)