본문 바로가기
Kubernetes

[Docker] 도커의 명시적 관리 Docker Compose

by 간장공장공차장 2024. 3. 26.
반응형

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