반응형
docker compose를 사용하는 이유
1. 제어를 단순화한다. :
다중 애플리케이션 환경에서 단일 YAML파일로 다중 컨테이너 애플리케이션을 정의하고 관리할 수 있다.
-> 서비스 간 의존성도 정의할 수 있다.
-> 환경 간 이식성 : 변수를 지원하여 사용자에 맞게 정의할 수 있음
-> 수평적 확장이 쉬워진다.
-> 프로젝트 단위로 네트워크, 볼륨 등의 사용하는 구성을 관리해준다. compose는 이를 캐시하기 때문에 서비스를 재사용하여 환경을 빠르게 사용할 수 있다.
2. 명시적으로 관리할 수 있어 협업의 효율성이 올라간다.
Docker Compose 구성
### 출처 : https://docs.docker.com/compose/compose-application-model/
### docker-compose.yaml
version : 3
services: # 여러 애플리케이션에 대해 정의
frontend:
image: example/webapp
ports:
- "443:8043"
networks:
- front-tier
- back-tier
configs:
- httpd-config
secrets:
- server-certificate
environment:
- MY_SQL_ROOT_PASSWROD=root
backend:
depennds_on:
- frontend # backend는 frontend에 의존성을 가지도록 설정(frontend 먼저 생성)
image: example/database
ports:
- 8080:8080 # 호스트port:컨테이너port
volumes:
- db-data:/etc/data
networks:
- back-tier
logging:
driver: "json-file"
options:
max-size: "8m"
max-file: "10"
example:
build: . #image를 통해서 빌드하지 않고 현재 파일 내 dockerfile을 통해 빌드
volumes:
- db-data:/etc/data
networks:
- back-tier
volumes:
db-data:
driver: flocker
driver_opts:
size: "10GiB"
configs:
httpd-config:
external: true
secrets:
server-certificate:
external: true
networks:
# The presence of these objects is sufficient to define them
front-tier: {}
back-tier: {}
1. Project : docker compose에서 다루는 workspace단위. 하나의 서비스를 위한 컨테이너 묶음, 프로젝트 단위로 network가 생성됨. docker-compose.yaml에서 명시된다.
2. Service : 컨테이너를 관리하기 위한 단위, scale을 통해 수평적 확장이 가능하다.
3. Container : 서비스를 통해 컨테이너 관리
❈ depends_on 관련으로, 참고사항 : 생성은 먼저하지만 준비, Running은 누가 먼저 시작할 지 모름 (frontend가 생성이 오래걸릴 경우)
따라서 entrypoint로 계속 확인해야함.
Docker compose 사용 명령어
docker-compose ls
docker-compose ls -a
docker-compose up #foreground로 실행
docker-compose up -d #background로 실행
docker-compse -p my-project up -d
docker-compose down # 컨테이너, 네트워크 제거
docker-compse down -v # 컨테이너, 네트워크, 볼륨 제거
docker-compose up --scale web=3 #web 서비스를 3개로 확장
###docker-compose 모니터링
docker-compose logs
docker-compose events
docker-compose images
docker-compose ps
docker-compose top
반응형
'Kubernetes' 카테고리의 다른 글
[kubernetes] Troubleshooting (0) | 2024.11.15 |
---|---|
[kubernetes] REHEL에서 alias, 자동완성 설정하기 (0) | 2024.11.15 |
[Docker] 도커 이미지 빌드 (0) | 2024.03.26 |
[Docker] Docker 트러블슈팅 (0) | 2024.03.25 |
[Docker] 볼륨 설정하기 (0) | 2024.03.25 |