[Docker 강의 8편] Docker Compose 란?

2024. 9. 25. 08:00·Docker/Docker 강의
목차
  1. 1. Docker Compose의 개념
  2. 2. Docker Compose 설치하기
  3. 2-1. 설치 방법
  4. 2-2. 설치 확인
  5. 3. docker-compose.yml 파일 작성
  6. 3-1. 기본 예시
  7. 3-2. 서비스 정의
  8. 4. Docker Compose 명령어 사용법
  9. 4-1. 컨테이너 실행
  10. 4-2. 컨테이너 종료
  11. 6. Compose의 볼륨 관리
  12. 7. 환경 변수와 .env 파일 사용
  13. 7-1. .env 파일 작성
  14. 7-2. docker-compose.yml에 환경 변수 사용
  15. 8. Docker Compose의 유용한 기능
  16. 8-1. 의존성 관리
  17. 8-2. 로그 확인
  18. 9. 도커 Compose와 CI/CD 파이프라인
  19. 10. 도커 Compose를 효과적으로 사용하기 위한 팁
  20. 과제
  21. 다른 Docker 강의 더보기
반응형

 

안녕하세요 펭귄 교수입니다.

 

이번 글에서 소개할 Docker Compose는 여러 컨테이너로 구성된 애플리케이션을 정의하고, 설정하고, 동시에 실행할 수 있도록 도와주는 도구입니다.

 

단일 컨테이너를 관리하는 도커와는 달리, Docker Compose는 여러 컨테이너를 한 번에 구성할 수 있습니다.

이를 통해 복잡한 애플리케이션 환경을 쉽게 구성하고 관리할 수 있습니다.

 

그럼 자세히 알아보도록 하죠.


1. Docker Compose의 개념

Docker Compose는 docker-compose.yml이라는 설정 파일을 기반으로 작동합니다.

이 파일 안에 서비스 정의, 네트워크 설정, 볼륨 관리 등 여러 컨테이너 간의 설정을 포함할 수 있습니다.

이를 통해 데이터베이스, 웹 애플리케이션, 캐시 등 여러 서비스를 함께 관리할 수 있습니다.

 

docker compose의 로고

 

Compose의 주요 장점은 애플리케이션 스택을 코드로 정의하고, 이를 버전 관리할 수 있다는 점입니다.

여러 명이 협업하는 환경에서 복잡한 서버 환경을 재현하기에 매우 유리합니다.


2. Docker Compose 설치하기

Docker Compose는 도커가 설치된 환경에서 별도의 명령어로 실행됩니다.

먼저, Docker Compose를 설치하는 방법을 알아보겠습니다.

 

2-1. 설치 방법

Docker Compose는 다양한 운영체제에서 사용할 수 있습니다.

 

Windows, Mac 설치 가이드

윈도우와 Mac은 Docker Desktop, Docker ToolBox를 설치할 때 docker-compose 도 같이 설치됩니다.

 

Linux 설치 가이드

Linux의 경우, 별도 설치와 권한 설정이 필요합니다.

방법은 다음과 같습니다.

 

1. docker-compose 설치

sudo curl -L "https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

 

2. docker-compose 권한 부여

sudo chmod +x /usr/local/bin/docker-compose

 

3. 심볼릭 링크 연결

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

 

2-2. 설치 확인

설치가 완료되면, 터미널에서 아래 명령어를 입력하여 설치 여부를 확인할 수 있습니다.

docker-compose --version
 
리눅스에서 실행한 결과

 


3. docker-compose.yml 파일 작성

Docker Compose의 핵심은 docker-compose.yml 파일입니다.

이 파일은 애플리케이션의 서비스를 정의하고, 각 서비스가 어떻게 연결되는지를 설정합니다.

예시 파일을 통해 기본적인 사용법을 알아보겠습니다.

3-1. 기본 예시

다음은 간단한 docker-compose.yml 예시입니다. 이 파일은 웹 애플리케이션과 데이터베이스 컨테이너를 함께 구성합니다.

version: '3'
services:
  web:
    image: nginx
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example
 

3-2. 서비스 정의

  • web: nginx 이미지를 사용하여 웹 서버를 구성합니다. ports 설정을 통해 호스트의 80번 포트를 컨테이너의 80번 포트와 연결합니다.
  • db: mysql 이미지를 사용하여 데이터베이스를 구성합니다. environment로 환경 변수를 설정해, 루트 비밀번호를 지정합니다.

이제 이 파일을 기반으로 도커 Compose를 실행하여 두 개의 서비스를 한 번에 띄울 수 있습니다.


4. Docker Compose 명령어 사용법

Docker Compose는 여러 명령어를 제공하여 컨테이너를 관리할 수 있습니다. 몇 가지 기본적인 명령어를 소개합니다.

4-1. 컨테이너 실행

docker-compose up 명령어를 사용하여 정의된 모든 서비스를 한 번에 실행할 수 있습니다.

docker-compose up
 

docker-compose up 실행 결과

 

Ctrl+C를 눌렀을 때

 

실행하면 위와 같이 터미널에 출력이 쭉 나오며, Break를 할 경우 컨테이너가 종료되는 것을 볼 수 있습니다.

 

 

옵션으로 -d를 추가하면 백그라운드에서 컨테이너를 실행할 수 있습니다.

docker-compose up -d
 

백그라운드로 실행되는 두 컨테이너

4-2. 컨테이너 종료

컨테이너를 종료하려면 docker-compose down 명령어를 사용합니다.

이 명령어는 실행 중인 모든 컨테이너를 중지하고, 네트워크 및 볼륨도 정리합니다.

docker-compose down

 

Stop과 Remove 동작이 같이 실행

5. Compose와 네트워크 관리

Docker Compose는 자동으로 서비스 간의 네트워크를 구성합니다.

각 컨테이너는 같은 네트워크 내에서 서로의 이름을 통해 통신할 수 있습니다.

version: '3'
services:
  web:
    image: nginx
    ports:
      - "80:80"
  db:
    image: mysql:5.7
    networks:
      - backend

networks:
  backend:
 

이 예시에서 web과 db는 같은 backend 네트워크에 속해 있기 때문에 서로 이름으로 접근할 수 있습니다.

backend라는 네트워크로 같이 연결

 


6. Compose의 볼륨 관리

Docker Compose는 볼륨을 통해 데이터 영속성을 보장합니다.

데이터를 컨테이너 외부에 저장해 컨테이너가 중지되거나 삭제되어도 데이터는 유지됩니다.

 
version: '3'
services:
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data:

 

이 예시에서 db_data라는 볼륨을 생성해 MySQL 데이터를 보관합니다.

blog_db_data 라는 Volume 생성

 


7. 환경 변수와 .env 파일 사용

Docker Compose에서는 환경 변수를 설정할 수 있으며, 이때 .env 파일을 사용하여 보다 쉽게 변수를 관리할 수 있습니다.

7-1. .env 파일 작성

다음은 간단한 .env 파일의 예시입니다.

MYSQL_ROOT_PASSWORD=example 
MYSQL_DATABASE=mydb
 

7-2. docker-compose.yml에 환경 변수 사용

docker-compose.yml에서 .env 파일의 변수를 참조하여 사용할 수 있습니다.

version: '3'
services:
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: ${MYSQL_DATABASE}
 

이와 같은 방식으로 환경 변수를 쉽게 관리할 수 있으며, 보안적인 측면에서도 유리합니다.


8. Docker Compose의 유용한 기능

Docker Compose는 대규모 애플리케이션을 관리할 때 매우 유용합니다. 이외에도 몇 가지 추가 기능을 제공하여 복잡한 서비스 구성을 쉽게 관리할 수 있습니다.

8-1. 의존성 관리

서비스 간 의존성을 설정하여 특정 서비스가 먼저 시작되도록 할 수 있습니다. 예를 들어, 데이터베이스가 시작된 후에 웹 애플리케이션이 실행되도록 설정할 수 있습니다.

version: '3'
services:
  web:
    image: nginx
    depends_on:
      - db
  db:
    image: mysql:5.7

8-2. 로그 확인

docker-compose logs 명령어를 사용하여 실행 중인 컨테이너의 로그를 실시간으로 확인할 수 있습니다.

docker-compose logs
 

옵션을 통해 특정 서비스의 로그만 확인할 수도 있습니다.

docker-compose logs web

logs 커맨드

 


9. 도커 Compose와 CI/CD 파이프라인

도커 Compose는 CI/CD 파이프라인에서 자동화된 테스트 환경을 구성할 때도 사용됩니다.

애플리케이션이 여러 컨테이너로 구성된 경우, 도커 Compose를 사용하여 모든 서비스를 쉽게 실행하고 테스트할 수 있습니다.

 

CI 도구에서 docker-compose.yml 파일을 활용하면, 테스트 환경을 간편하게 구성할 수 있습니다.

또한, 파이프라인을 통해 빌드된 이미지를 여러 환경에 배포할 때도 유용합니다.


10. 도커 Compose를 효과적으로 사용하기 위한 팁

도커 Compose를 더욱 효율적으로 사용하기 위한 몇 가지 팁을 소개합니다.

  • 서비스 간의 네트워크 분리: 여러 서비스 간에 네트워크를 분리하여 보안을 강화할 수 있습니다.
  • 빌드 캐시 사용: docker-compose up --build 명령어로 이미지를 빌드할 때 캐시를 활용하여 빌드 시간을 줄일 수 있습니다.
  • 헬스체크(Healthcheck): 서비스의 상태를 주기적으로 확인하여 문제가 발생할 경우 이를 감지할 수 있습니다.

과제

  1. 나만의 docker-compose.yml 작성: 기본적인 웹 애플리케이션(예: nginx)과 데이터베이스(예: mysql)를 포함한 docker-compose.yml 파일을 작성해보세요.
  2. Compose로 애플리케이션 실행: docker-compose up 명령어를 사용하여 작성한 파일을 실행해보세요.
  3. 다양한 서비스 추가: 캐시 서버(예: redis)를 추가하고, 웹 애플리케이션과 연결해보세요.

 

다른 Docker 강의 더보기

 

[Docker 강의 4편] 도커 네트워크와 볼륨 관리

안녕하세요 펭귄 교수입니다. 이번 포스팅에서는 도커의 네트워크와 볼륨을 다루는 방법을 알아보겠습니다.도커 네트워크는 컨테이너 간의 통신을 가능하게 하고,볼륨은 컨테이너에서 생성한

csexy-1365.tistory.com

 

 

[Docker 강의 5편] 도커 이미지 최적화 및 관리

안녕하세요 펭귄 교수입니다. 이번 강의의 주제는 도커 이미지 최적화 및 관리입니다,도커 이미지는 컨테이너가 실행될 때 필요한 모든 파일과 설정을 포함한 "템플릿" 같은 역할을 합니다. 하

csexy-1365.tistory.com

 

반응형

'Docker > Docker 강의' 카테고리의 다른 글

[Docker 강의 10편] Docker Registry  (0) 2024.09.29
[Docker 강의 9편] 다중 컨테이너 환경 구축  (1) 2024.09.25
[Docker 강의 7편] 도커 이미지 빌드  (0) 2024.09.23
[Docker 강의 6편] 도커 파일 작성하기 (Dockerfile)  (0) 2024.09.19
[Docker 강의 5편] 도커 이미지 최적화 및 관리  (0) 2024.09.17
  1. 1. Docker Compose의 개념
  2. 2. Docker Compose 설치하기
  3. 2-1. 설치 방법
  4. 2-2. 설치 확인
  5. 3. docker-compose.yml 파일 작성
  6. 3-1. 기본 예시
  7. 3-2. 서비스 정의
  8. 4. Docker Compose 명령어 사용법
  9. 4-1. 컨테이너 실행
  10. 4-2. 컨테이너 종료
  11. 6. Compose의 볼륨 관리
  12. 7. 환경 변수와 .env 파일 사용
  13. 7-1. .env 파일 작성
  14. 7-2. docker-compose.yml에 환경 변수 사용
  15. 8. Docker Compose의 유용한 기능
  16. 8-1. 의존성 관리
  17. 8-2. 로그 확인
  18. 9. 도커 Compose와 CI/CD 파이프라인
  19. 10. 도커 Compose를 효과적으로 사용하기 위한 팁
  20. 과제
  21. 다른 Docker 강의 더보기
'Docker/Docker 강의' 카테고리의 다른 글
  • [Docker 강의 10편] Docker Registry
  • [Docker 강의 9편] 다중 컨테이너 환경 구축
  • [Docker 강의 7편] 도커 이미지 빌드
  • [Docker 강의 6편] 도커 파일 작성하기 (Dockerfile)
Dev.Poinguinie
Dev.Poinguinie
게임, 코딩 블로그 입니다. 여러 일상적인 글도 올려요! 많이 봐주세요! 감사합니다.
  • Dev.Poinguinie
    펭귄교수
    Dev.Poinguinie
  • 공지사항

    • 티스토리 스킨 변경
    • 파이썬 코딩 강의 공지사항
    • 분류 전체보기
      • 새티스팩토리
        • 정보
        • 모드
        • 리뷰
      • 펠월드
        • 정보
        • 패치노트
      • 게임
        • 스팀 세일
        • 테라리아
        • 디펜서바이버
      • App
        • Kotlin
        • Flutter
      • Front End
        • HTML
        • JavaScript
        • React
      • Back End
        • Node.js
      • Docker
        • Docker 강의
        • Docker Project
      • 프로그래밍
        • AI
        • Chrome Extension
        • Markdown
        • Python
        • C++
        • Linux
        • Error
        • Tool
      • Computer Science
        • Algorithm
        • Network
      • 게임 프로그래밍
        • 유니티
      • 제작
        • 웹사이트
        • 기타 프로그램
      • 일상
        • 자작시
        • 노래 추천 및 정보
        • 블로그 운영
        • 내일의 모든 것
        • 오블완 챌린지
      • 리뷰
        • 식당 리뷰
        • IT 리뷰
  • 링크

    • 새티스 팩토리 모드
    • 깃허브 블로그
    • 깃허브 프로필
  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.3
Dev.Poinguinie
[Docker 강의 8편] Docker Compose 란?

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.