✅ Docker란?

졸용·2025년 5월 22일

Docker는 애플리케이션을 컨테이너(Container) 라는 가볍고 이식 가능한 단위로 패키징하고 실행할 수 있게 해주는 플랫폼을 말한다.
간단히 말하면, 개발 환경을 어디서든 동일하게 만들 수 있도록 도와주는 도구라고 생각하면 된다.


☑️ Docker의 핵심 개념

1. 이미지(Image)

  • 애플리케이션과 그 실행에 필요한 모든 것(코드, 라이브러리, 설정 등)을 포함한 템플릿
  • 한 번 만들면 누구나 동일한 환경에서 실행 가능

2. 컨테이너(Container)

  • 이미지를 실행한 실제 인스턴스
  • 가볍고 독립적인 실행 환경 제공
  • 서로 다른 앱이 같은 서버에서도 충돌 없이 동작 가능

3. Dockerfile

  • 이미지를 만들기 위한 설정 파일 (예: 어떤 OS를 쓸지, 어떤 라이브러리를 설치할지 등)

☑️ Docker를 왜 쓰나?

  • 환경 차이 문제 해결: "내 컴퓨터에서는 되는데?" 문제 방지
  • 배포 용이성: 컨테이너만 있으면 어디서든 실행 가능
  • 버전 관리: 이미지 버전으로 환경 상태를 추적 가능
  • 경량화: 가상 머신보다 훨씬 가볍고 빠름

✔️ 예시

docker run -d -p 80:80 nginx
  • nginx라는 웹 서버를 컨테이너로 실행
  • -p 80:80: 외부 포트 80을 내부 포트 80에 연결


✅ Docker Compose란?

Docker만으로도 강력하지만, Docker Compose(도커 컴포즈)는 여러 개의 컨테이너를 한 번에 정의하고 실행할 수 있도록 도와주는 도구이다.


Docker Compose는 docker-compose.yml이라는 파일 하나로 여러 컨테이너(서비스)를 구성하고 관리할 수 있게 해준다.

예를 들어, 웹 애플리케이션을 실행할 때:

  • 웹 서버 (예: Spring)
  • 데이터베이스 (예: MySQL)
  • Redis 캐시

이렇게 여러 개의 컨테이너가 필요하니까 → 이걸 한 번에 설정하고 실행할 수 있도록 해주는 게 Docker Compose다.


✔️ docker-compose.yml 예시

version: '3'
services:
  web:
    build: .
    ports:
      - "8080:8080"
    depends_on:
      - db
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: mydb

설명:

  • web: Spring 애플리케이션 (Dockerfile 기준으로 빌드)
  • db: MySQL 8.0 컨테이너
  • depends_on: web 서비스가 db가 먼저 실행된 다음에 실행되도록 설정

✔️ 실행 방법

docker-compose up
  • 모든 서비스 컨테이너가 순서에 맞게 실행됨
docker-compose down
  • 실행 중인 모든 컨테이너 종료 및 정리

☑️ 왜 Docker Compose를 쓸까?

DockerDocker Compose
하나의 컨테이너만 쉽게 실행여러 개의 컨테이너를 한 번에 실행
docker run 명령어 직접 입력설정 파일로 정의해 재사용 가능
복잡한 의존관계 관리 불편depends_on 등으로 쉽게 구성

profile
꾸준한 공부만이 답이다

0개의 댓글