도커 컴포즈란?
Docker Compose는 단일 호스트 환경에서 여러 개의 컨테이너를 한 번에 정의하고 관리할 수 있는 도구입니다. 개발 환경에서 여러 개의 서비스를 쉽게 실행하고 연결할 수 있도록 도와줍니다. 예를 들어, 하나의 애플리케이션을 실행하려면 데이터베이스, 웹 서버 등 여러 개의 서비스를 각각 설정하고 실행해야 하는 번거로움이 있다. 하지만 Docker Compose를 사용하면 이러한 서비스들을 한 번에 실행하고 손쉽게 관리할 수 있다.
도커 컴포즈 사용 목적
사용 목적 | 설명 |
일관된 환경 제공 | 하나의 YAML 파일에서 여러 컨테이너를 정의하고 실행하여 복잡한 설정 과정을 단순화할 수 있음. |
팀 협업 최적화 | 공유 가능한 설정 파일을 통해 개발 환경을 통일하고, 협업 시 일관된 환경을 유지할 수 있음. |
다중 컨테이너 관리 | 여러 개의 컨테이너를 하나의 설정 파일(docker-compose.yml)로 정의하고 실행 |
환경별 유연한 설정 | 환경 변수 지원을 통해 다양한 운영 환경에서도 동일한 설정을 적용할 수 있도록 유연하게 구성 가능. |
서비스 간 원활한 연결 | 컨테이너 간 네트워크 설정을 자동화하여 웹 서버, DB 등 여러 서비스가 쉽게 연동될 수 있도록 지원. |
도커 컴포즈 설치
현재 Docker Compose의 최신 버전은 V2이며, Docker CLI에 기본적으로 통합되었기 때문에 apt 패키지 관리자를 통해 손쉽게 설치할 수 있습니다. V2부터는 독립 실행형이 아닌 Docker CLI 플러그인으로 제공되며, docker compose 명령어로 실행할 수 있습니다.
# 기존 docker-compose 제거
$ sudo apt-get remove docker-compose -y
# Docker Compose 플러그인 설치
$ sudo apt install docker-compose-plugin
# 설치 확인
$ docker compose version
도커 컴포즈 파일
docker-compose.yml 파일은 YAML 형식으로 작성되며, 여러 개의 컨테이너를 정의하는 설정 파일입니다. 이를 통해 여러 개의 컨테이너를 손쉽게 실행하고 중지할 수 있습니다
도커 컴포즈 기본구조
다음은 가장 기본적인 docker-comopose.yml 파일 예제 입니다.
t version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: 123!!00
구성 요소 설명
- version: 도커 컴포즈 파일의 버전을 지정합니다.
- services: 여러 개의 컨테이너(서비스)를 정의하는 영역입니다.
- web: 웹 서버 역할을 하는 컨테이너(서비스)입니다.
- image: 사용할 도커 이미지를 지정합니다. 여기서는 nginx:latest 이미지를 사용합니다.
- ports: 컨테이너와 호스트 간의 포트 매핑을 설정합니다. (8080 → 80 포트로 매핑)
- db: 데이터베이스 역할을 하는 컨테이너입니다.
- image: mysql:5.7 이미지를 사용합니다.
- environment: MySQL 환경 변수를 설정합니다. (MYSQL_ROOT_PASSWORD 지정)
도커 컴포즈 실행 방법
아래 명령어를 사용하여 docker-compose.yml 파일을 실행하면 설정된 모든 컨테이너가 한꺼번에 실행됩니다.
docker-compose.yml 파일 실행
$ docker-compose up -d
- -d 옵션: 백그라운드에서 실행되도록 설정
실행된 컨테이너 확인
$ docker ps
컨테이너 중지
$ docker-compose down
로그 확인
$ docker-compose logs
#특정 서비스 로그 확인
$ docker-compose logs [서비스명]
마무으리
이번 글에서는 Docker Compose를 활용하는 방법을 다뤄보았습니다. 도커 초심자로서 하나씩 배워가며 직접 실습해보니, 컨테이너 관리에 대한 개념을 보다 명확하게 이해할 수 있었습니다. 앞으로도 도커에 대해 꾸준히 공부하며, 배운 내용을 문서로 정리해 나가려 합니다. 💪
이 글이 저처럼 도커를 처음 시작하는 분들에게 조금이나마 도움이 되길 바랍니다. 🙏
'Dev > Docker' 카테고리의 다른 글
[Docker] Docker 초보 탈출! 명령어 총 정리 (0) | 2025.02.13 |
---|---|
[Docker] 컨테이너 라이프 사이클 & CLI (0) | 2025.02.11 |
[Docker] Docker 기초 이론 (0) | 2025.02.06 |
[Docker] 포테이너(Portainer) 설치 & 개념 정리 (1) | 2025.02.06 |
[Docker] Ubuntu 24.04 Docker 설치 (0) | 2025.02.05 |