Docker · 2025-12-15 · 1분 읽기

Docker 기초부터 실전까지 - 컨테이너 이해하기

목차
  • 1. 컨테이너 vs 가상머신
  • 2. Dockerfile 작성
  • 레이어 캐시 활용
  • 3. Docker Compose
  • 4. 자주 쓰는 명령어

1. 컨테이너 vs 가상머신

가상머신(VM)은 호스트 OS 위에 하이퍼바이저를 두고 게스트 OS를 통째로 올린다. 반면 컨테이너는 호스트 OS의 커널을 공유하고, 프로세스 격리만 수행한다.

구분VMContainer
부팅 시간분 단위초 단위
용량GBMB
격리 수준완전 격리프로세스 격리

2. Dockerfile 작성

FROM openjdk:17-jdk-slim
 
WORKDIR /app
 
COPY target/*.jar app.jar
 
EXPOSE 8080
 
ENTRYPOINT ["java", "-jar", "app.jar"]

레이어 캐시 활용

FROM openjdk:17-jdk-slim
 
WORKDIR /app
 
# 의존성 변경이 없으면 캐시 사용
COPY pom.xml .
RUN mvn dependency:resolve
 
COPY src ./src
RUN mvn package -DskipTests
 
ENTRYPOINT ["java", "-jar", "target/app.jar"]

3. Docker Compose

여러 컨테이너를 함께 관리할 때 사용한다.

version: '3.8'
 
services:
  app:
    build: .
    ports:
      - "8080:8080"
    environment:
      - SPRING_DATASOURCE_URL=jdbc:mysql://db:3306/mydb
    depends_on:
      - db
 
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: mydb
    volumes:
      - mysql-data:/var/lib/mysql
 
volumes:
  mysql-data:

4. 자주 쓰는 명령어

# 이미지 빌드
docker build -t my-app:1.0 .
 
# 컨테이너 실행
docker run -d -p 8080:8080 --name my-container my-app:1.0
 
# 로그 확인
docker logs -f my-container
 
# 컨테이너 접속
docker exec -it my-container /bin/bash
 
# 컴포즈 실행
docker compose up -d
 
# 컴포즈 종료 및 삭제
docker compose down -v

'Docker 🐳' 카테고리의 다른 글

  • 이 카테고리에 다른 글이 없습니다.