9. Docker Compose

2024. 8. 16. 15:23·Docker
목차
  1. Docker Compose 기본
  2. Docker Compose 실습

Docker Compose 기본

도커 컴포즈는 여러 개의 Docker 컨테이너를 관리하는 도구이다.

각각의 컨테이너는 하나의 파일 안에 모두 정의되어 있다.

서비스 간의 의존성이나 도커의 네트워크도 파일 안에서 설정할 수 있다.

도커 컴포즈는 도커 데스크탑 설치 시 기본으로 설치된다.
한 번의 명령어로 여러 개의 컨테이너를 한 번에 실행하거나 종료할 수 있다.

로컬 개발 환경에서 활용하기 편리합니다.

YAML

YAML은 데이터를 표현하기 위한 포맷 중 하나이다.

도커 컴포즈를 통해 관리할 컨테이너(서비스)를 docker-compose.yml 파일에 정의한다.

yml은 JSON과 같이 데이터를 작성하기 위한 양식이다. JSON과 유사하지만 간결하고 가독성이 더 뛰어나다.

JSON은 {}와 "" , 가 필수인 반면 YAML은 띄어쓰기 기반으로 정보를 구분합니다.

Docker Compose 명령어

Docker Compose 에서 말하는 서비스는 컨테이너와 동일한 개념이다.

Docker Compose 실습

docker-compose.yml 파일은 크게 두 가지로 나눌 수 있다.

첫 번째 버전 부분에는 docker-compose의 버전을 의미한다.

어떤 버전을 사용하냐에 따라서 기능들이 더 추가되거나 없을 수도 있다.

services 부분에는 실제로 실행할 컨테이너들의 리스트를 출력한다.

services의 바로 아래 단계에 있는 목록들이 컨테이너를 의미한다.

 

docker compose up -d --build
로컬에 이미지가 있어도 다시 이미지를 빌드

소스 코드를 변경하고 새로운 버전으로 올리기 위해서는 이미지의 태그를 변경하거나 docker compose up 명령을 사용할 때 --build 옵션을 주면 된다. 

공통 변수 활용

Docker Compose 예시

docker-compose.yml 파일의 leafy-postgres 부분이 실행하는 컨테이너는 docker run 명령을 사용해서 컨테이너를 실행하는 것과 완전히 동일한 결과를 제공한다. 컨테이너의 이름은 서비스의 이름과 매칭된다. 이미지명은 이미지 속성의 값과  매칭된다.

이미지가 없거나 --build 옵션을 줄 경우에는 leafy-backend 폴더의 Dockerfile파일과 소스 코드를 활용해서 새로운 이미지를 빌드한다.

environment를 통해 환경변수값을 설정한다.

depend_on 부분은 depend_on에 지정한 컨테이너가 실행될 때까지 해당 컨테이너의 실행을 대기한다.

Docker Compose volume

volumes: 
  mydata:

위와 같이 볼륨을 함께 생성할 수 있다.

볼륨을 사용할때는 컨테이너의 바로 아래 단계에서 volumes를 추가하면 된다.

volumes에 넣는 값을 보면 mydata 볼륨을 /var/lib/postgresul/data로 마운트 했다는 의미다.

리소스 사용량 제한, 재시작 정책 지정

-cpus와 -memory 옵션을 사용해서 컨테이너의 CPU와 메모리 사용량을 제한할 수 있다.

deploy:resources:limits 옵션에 cpus와 memory에 값을 지정하면 된다.

 

'Docker' 카테고리의 다른 글

10. 도커와 DevOps  (0) 2024.08.16
7. 도커 볼륨  (0) 2024.08.16
6. 네트워크  (1) 2024.08.15
5. 컨테이너 애플리케이션 구성  (0) 2024.08.15
4. 이미지 빌드  (0) 2024.08.14
  1. Docker Compose 기본
  2. Docker Compose 실습
'Docker' 카테고리의 다른 글
  • 10. 도커와 DevOps
  • 7. 도커 볼륨
  • 6. 네트워크
  • 5. 컨테이너 애플리케이션 구성
an_jjin
an_jjin
공부한 내용을 정리하는 개발 기록 블로그
an_jjin
An Devlog
an_jjin
전체
오늘
어제
  • 분류 전체보기
    • JAVA
      • 초급
      • 중급1
      • 중급2
      • 고급1
    • Spring
      • 핵심 원리 기본
      • MVC1
      • MVC2
      • DB1
      • 락
      • 디자인 패턴
      • AOP
    • JPA
      • JPA 기본
      • JPA 활용 1
      • JPA 활용 2
      • Spring Data Jpa
      • JPA 정리
    • 프로젝트
      • Filmeet
      • FitTrip
      • Kidsping
    • CS
      • 기술 면접 대비 CS 전공 핵심요약집
    • 네트워크
      • HTTP
      • WebSocket
    • 데이터베이스
    • 운영체제
      • 뇌를 자극하는 윈도우즈 시스템 프로그래밍
    • Git
    • Kafka
    • Docker
    • [LG유플러스] 유레카
    • 회고

블로그 메뉴

  • 홈
  • 태그
  • 방명록

링크

공지사항

인기 글

태그

spring websocket
db부하
Transactional Outbox
Websocket
after_commit
트랜잭션 아웃박스 패턴
lg 유플러스 유레카 후기
STOMP
프록시 팩토리
lg 유플러스 유레카
redis 분산락
스레드
redis
queryplan
분산락
이벤트 응모 시스템
동시성
transactional outbox pattern
자바
객체지향
도커
before_commit
AOP
lg 유레카
선착순 응모 시스템
캐시
lg 유플러스 유레카 sw 교육
lg 유플러스 유레카 sw 교육 후기
빈 후처리기
redlock

최근 댓글

최근 글

hELLO· Designed By정상우.v4.6.1
an_jjin
9. Docker Compose

개인정보

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

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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