🐳 Docker란?

정의

Docker는 애플리케이션과 실행 환경을 컨테이너로 분리해 배포, 실행, 관리하기 쉽게 만드는 플랫폼이다.

Docker를 사용하면 실행 환경 차이로 생기는 문제를 줄이고, 애플리케이션을 같은 방식으로 실행하기 쉬워진다.

🧩 주요 개념

개념 설명
Image 컨테이너 실행에 필요한 파일 시스템과 설정을 담은 템플릿
Container Image를 기반으로 실제 실행 중인 인스턴스
Dockerfile 이미지를 만들기 위한 빌드 스크립트
Docker Hub 이미지를 저장하고 공유하는 공개 저장소
Compose 여러 컨테이너를 한 번에 정의하고 실행하는 방식

⚙️ Docker를 쓰는 이유

  • 실행 환경을 일관되게 만들 수 있다.
  • 배포와 실행 과정을 단순하게 만들 수 있다.
  • 개발, 테스트, 운영 환경을 비슷하게 맞추기 쉽다.
  • 서비스와 의존성을 분리해서 관리할 수 있다.

🛠️ Docker 실행 환경 구성

  1. 가상화 기능을 켠다.
    • BIOS 또는 UEFI에서 가상화 기능을 활성화한다.
    • Windows에서는 Docker Desktop 실행 조건을 확인한다.
  2. Docker를 설치한다.

🧱 Dockerfile 예시

정의

Dockerfile은 Docker 이미지를 만들기 위한 빌드 명령 묶음이다.

FROM openjdk:17-jdk-alpine
WORKDIR /app
COPY build/libs/app.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]
명령어 설명
FROM 기반 이미지를 지정한다
WORKDIR 작업 디렉터리를 지정한다
COPY 로컬 파일을 이미지로 복사한다
ENTRYPOINT 컨테이너 시작 시 실행할 명령을 지정한다

🧪 docker-compose.yml 예시

정의

Compose는 여러 컨테이너를 YAML 파일 하나로 묶어서 관리하고 실행할 수 있게 해준다.

version: "3.8"
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8080:8080"
    environment:
      SPRING_PROFILES_ACTIVE: prod
    volumes:
      - ./logs:/app/logs

  db:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: rootpw
      MYSQL_DATABASE: appdb
    ports:
      - "3306:3306"
    volumes:
      - dbdata:/var/lib/mysql

volumes:
  dbdata:
항목 설명
services 컨테이너 정의
build Dockerfile 경로 지정
image 사용할 이미지 지정
ports 호스트와 컨테이너 포트 매핑
volumes 데이터 보존 설정
environment 환경 변수 지정

🔍 함께 보면 좋은 문서

  • Docker Image
  • Docker 기반 서버 구성
  • Docker를 활용한 NAS 컨테이너 실행

📌 정리

  • Docker는 컨테이너 기반 실행 환경을 제공한다.
  • Image, Container, Dockerfile, Compose 개념을 함께 이해하면 좋다.
  • 개발과 배포 환경을 일관되게 유지하는 데 유리하다.

연결문서

댓글남기기