개발팀에서 가장 많이 듣는 말이 있다.
"내 컴퓨터에서는 잘 되는데요?"
개발자는 macOS, 서버는 Ubuntu, QA 환경은 Windows. Node.js 버전도 다르고, Python 가상환경도 제각각이다. 이 상황을 한 번에 정리하는 방법이 Docker다.
2026년 현재 Docker Engine은 v29.3.0까지 나왔고, IT 전문가의 92%가 실무에 쓰고 있다고 한다. 이미 선택이 아니라 기본 스택이 된 지 오래다.
Docker가 실제로 뭘 해결해 주는가
핵심은 간단하다. "내 앱이 실행되는 데 필요한 모든 것을 하나의 컨테이너에 담는다." 코드, 런타임, 라이브러리, 설정 파일까지 한 덩어리로 묶어서 어디서 실행하든 동일하게 동작하도록 만드는 것이다.
VM(가상머신)과 자주 비교되는데, 차이를 한 줄로 정리하면 이렇다. VM은 OS 전체를 올리지만, Docker는 OS 커널을 공유하고 프로세스 격리만 한다. 그래서 훨씬 가볍고 빠르다.
실전 예제: docker-compose로 팀 개발 환경 통일하기
Spring Boot + MySQL + Redis 구성을 예시로 보자. 아래 docker-compose.yml 파일 하나면 팀원 누구든 개발 환경을 5분 안에 세팅할 수 있다.
# docker-compose.yml
version: '3.9'
services:
app:
build: .
ports:
- "8080:8080"
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://db:3306/myapp
- SPRING_REDIS_HOST=redis
depends_on:
- db
- redis
db:
image: mysql:8.4
environment:
MYSQL_ROOT_PASSWORD: root1234
MYSQL_DATABASE: myapp
volumes:
- mysql_data:/var/lib/mysql
ports:
- "3306:3306"
redis:
image: redis:7.4-alpine
ports:
- "6379:6379"
volumes:
mysql_data:
실행은 한 줄이다.
docker compose up -d
신입이 입사해도 git clone → docker compose up 두 단계면 끝난다. 온보딩에 반나절이 걸리던 게 5분으로 줄어든다.
제대로 쓰는 Dockerfile 작성법
아무렇게나 Dockerfile 짜면 이미지 크기가 1GB를 넘기도 한다. 실무에서 많이 쓰는 최적화 패턴이다.
# 멀티 스테이지 빌드 - Java 17 기준
FROM eclipse-temurin:17-jdk-alpine AS builder
WORKDIR /app
COPY . .
RUN ./mvnw clean package -DskipTests
FROM eclipse-temurin:17-jre-alpine
WORKDIR /app
RUN addgroup -S spring && adduser -S spring -G spring
USER spring:spring
COPY --from=builder /app/target/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
멀티 스테이지 빌드를 쓰면 빌드용 JDK와 실행용 JRE를 분리할 수 있다. 이미지 크기가 보통 300MB대에서 180MB 이하로 줄어든다. Alpine 베이스 이미지를 쓰는 것도 기본이고, root 대신 전용 사용자로 실행하는 것도 보안상 습관으로 들여두는 게 좋다.
Docker v29에서 달라진 것들
2026년 3월 기준 최신 버전은 Docker Engine v29.3.0이다. 이번 v29 계열에서 눈에 띄는 변화 몇 가지를 정리했다.
- Docker AI Agent (Project Gordon): Docker Desktop과 CLI에 AI 에이전트가 내장됐다. "이 컨테이너가 왜 안 뜨는지 분석해줘" 같은 자연어 명령으로 원인 진단과 수정 제안을 받을 수 있다. MCP(Model Context Protocol)를 지원해서 외부 AI 서비스와도 연동된다.
- Docker Compose v5 + Go SDK: Compose 기능을 앱 코드 안에서 직접 쓸 수 있는 공식 Go SDK가 나왔다. CI/CD 파이프라인 코드에서 Compose를 프로그래밍 방식으로 제어할 수 있게 됐다.
- Buildx 기본 빌더 전환: 2026년 1월부터 Buildx가 기본 빌더로 사용된다. 멀티 플랫폼 빌드(ARM, AMD64 동시)가 훨씬 편해졌다.
- Hardened Images 오픈소스 무료 전환: CVE가 최소화된 보안 강화 이미지 1,000개 이상이 유료에서 무료로 풀렸다. 프로덕션 베이스 이미지 선택에 적극 활용할 만하다.
참고 영상
Docker 개념과 실습을 함께 보고 싶다면 아래 영상을 추천한다. Docker의 구조와 컨테이너 개념을 가장 명확하게 설명한 영상 중 하나다.
드림코딩 - 도커 한방에 정리 (개념 + 실습, 20분)
도입 순서 - 팀에 Docker 얹는 현실적인 방법
한 번에 다 바꾸려 하면 반발이 생긴다. 단계별로 가는 게 낫다.
- 먼저 DB만 Docker로 올린다 (MySQL, Redis). 가장 즉각적인 효과를 볼 수 있다.
- docker-compose로 전체 로컬 개발 환경을 묶는다.
- CI 파이프라인에 Docker 빌드를 붙인다.
- 프로덕션 배포까지 컨테이너화하고, 규모가 커지면 Kubernetes를 검토한다.
단계를 밟다 보면 자연스럽게 인프라 전체가 코드로 관리되는 구조가 된다. "내 컴퓨터에서는 되는데"라는 말이 사라지는 시점이 바로 1단계를 끝냈을 때다.
버전 기준: Docker Engine v29.3.0, Docker Compose v5.0.1, MySQL 8.4, Redis 7.4, Java 17 LTS (2026년 3월)
'IT & 개발' 카테고리의 다른 글
| Kubernetes 비용 최적화 완전 가이드 - 클라우드 비용 30% 줄이는 실전 전략 (0) | 2026.03.12 |
|---|---|
| React 19 완전 정복 - Actions, use() Hook, 마이그레이션 가이드 (0) | 2026.03.12 |
| PostgreSQL 성능 최적화 10가지 - DBA 없이도 쿼리 속도 10배 올리기 (0) | 2026.03.12 |
| 소버린 AI(Sovereign AI)란 무엇인가 - 국가 주도 AI의 부상과 개발자가 준비할 것 (0) | 2026.03.12 |
| AI 에이전트 개발 실전 가이드 - LangGraph로 멀티에이전트 시스템 구축하기 (0) | 2026.03.12 |
댓글