ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 도커 열번째 - 도커 컴포즈
    프로그래밍/Docker 2024. 1. 18. 05:19

     

    Docker Compose

    도커컴포즈 명령어

     

    이 명령어들은 docker-compose.yaml 파일이 있는 디렉토리에서만 동작한다.

     

     

    - 도커컴포즈는 여러번의 도커CLI를 실행하지 않고, 한번에 관련 어플리케이션을 yaml 파일로 구성하여 내부환경 구성과

    속성을 실행할 수 있다.

     

    - 도커컴포즈는 설정값을 캐싱하기 때문에 재시작시 변경이 없다면 캐싱된 정보를 그대로 사용하여 빠른 서비스 실행을 보장

     

    - yaml 코드에 포함된 어플리케이션들은 동일 네트워크에 포함되기 때문에 복잡한 연결 구성 없이도 쉽게 API 통신이 가능

     

    - 도커컴포즈는 쿠버네티스와 같이 컨테이너 오케스트레이션 및 컨테이너화된 어플리케이션 관리에 널리 사용되는 도구

     

    - 도커컴포즈는 다중 컨테이너 도커 어플리케이션을 정의*하고 실행하기 위한 도구 

      yaml파일을 사용하여 어플리케이션 서비스를 수행

      *정의한다는 것을 보통 선언적 구성이라고 함.

     

    - 이후 도커 컴포즈 CLI를 이용하여 모든 서비스의 라이프 사이클을 관리

     

     

    - 도커컴포즈 YAML 코드는 여러개의 도커 런 실행과 유사하며 네트워크, 볼륨 등을 한번에 생성할 수 있다.

      1. 기본 이미지, 노출된 포트, 환경 변수, 컨테이너 간의 종속성 등을 포함하는 컨테이너들에 대한 구성 지정

      2. 도커컴포즈로 실행된 컨테이너들은 독립된 네트워크로 구성되므로 컨테이너 간 통신이 쉽다.

     

     

    - 도커컴포즈 3단계 프로세스

      1. 도커파일 작성으로 배포하고자 하는 어플리케이션 환경 정의 (선택)

      2. 도커컴포즈.yml  하나 이상의 컨테이너 서비스를 실행할 수 있도록 서비스 정의

      3.  docker compose up 명령으로 yml 코드로 정의한 서비스를 시작하고 실행

     

     


     

     

    장점

    1. 서로 다른 OS 환경에서도 동일한 환경 구성 가능 (이식성이 높음)

    2. 동일환경을 사용하기 때문에 개발환경에 장애가 발생해도 팀간 소통이 쉬움

    3. 복잡한 환경도 yml 코드로 스크립트화 할 수 있기 때문에 자동화 가능

    4. 도커 컴포즈 CLI를 이용하여 쉽게 "멀티 컨테이너 어플리케이션"을 관리할 수 있음

     

    단점

    1. 여러 대의 컨테이너를 돌리기 때문에 순간적으로 리소스를 확 잡아먹을 수 있음.

    2. 도커 컴포즈 사용은 충분한 도커 컨테이너에 대한 이해도가 필요

     

     


     

     

     

     


     

     

    YAML   (Yet Another Markup Language  or  YAML ain't markup language (Text file)

     

    - 사람이 쉽게 읽을 수 있는 데이터 직렬화 언어 (위 -> 아래) 로 구성파일 작성에 주로 사용된다.

      3 tier 아키텍처의 경우  DB -> BE -> FE 순으로 간다.

     클러스터 환경인 경우 마스터 노드를 먼저 작성하고, 이어서 데이터노드를 작성

     

     

    YML 코드 문법적 특징

    - 중괄호, 대괄호, 닫기 태그 또는 따옴표 같은 통상적인 형식 기호가 없다.

    - 파이썬 스타일의 들여쓰기를 사용해 구조를 결정하고 중첩을 표시

    - 시스템 전반에서 이식성 유지를 위해 들여쓰기는 탭 문자를 허용하지 않으며, 공백문자를 원하는 공백*n으로 규칙성 있게 사용

    - yml은 K-V 중심으로 작성되고 숫자형, 문자형, Boolean형을 지원

     

    # 해당라인 주석처리
    --- 문서의 시작 (선택)
    ... 문서의 끝 (선택)
    key python dictionary 자료형의 key와 동일
    value python dictionary 자료형의 value와 동일

     

     

     

    docker-compose.yaml 파일 작성은  프로젝트의 최상위 디렉토리에 위치.  하위프로그램의 설정과 연관성을 코드화함

     

     


     

     

    YAML 코드 작성: version

    - 일반적으로 docker-compose.yaml 코드의 첫줄은 version을 명시한다.  (순서 무관)

    - version 명령은 docker engine release와 연관되는 compose file format이다.

     

    YAML 코드 작성: services

    - 도커컴포즈는 컨테이너 대신 서비스 개념을 사용.

      상위의 버전명령과 동일 레벨로 작성되며  다중 컨테이너 서비스 실행이 목적이기 때문에 복수형으로 작성

    - 서비스 하위에는 실행될 컨테이너 서비스를 작성하고, 하위 레벨에 도커 명령실행과 유사하게 컨테이너 실행에

    필요한 옵션들을 작성

       build

       container_name

       ports

       expose

       network

       volumes

       environment

       command

       restart

       depends_on

       scale

       

     

    YAML 코드 작성: network

    - 다중 컨테이너들이 사용할 최상위 네트워크 키들을 정의하고 이하 하위 서비스 단위로 이 네트워크를 선택 할 수 있다.

      driver: 서비스 컨테이너가 브리지 네트워크가 아닌 다른 네트쿼으를 사용하도록 설정

      ipam: IPAM (IP Address Manager) 를 위해 사용할 수 있는 옵션으로 subner, ip, gateway 범위 설정

      external: 기존의 네트워크를 사용하도록 설정

     

     

    YAML 코드 작성: volume

    - 데이터의 지속성을 유지하기 위해 최상위 레벨에 볼륨을 정의하고, 서비스 레벨에서 볼륨명과 서비스 내부의 디렉토리를 바인드함.

    - docker volume create와 동일하게 docker가 관리하는 /var/lib/docker/volume에 자동 배치된다.

    - "docker volume ls" 명령과 "docker volume inspect 볼륨명"으로 확인 가능하다.

     

     

    YAML 코드 작성: healthcheck

    - 컨테이너 서비스의 상태를 체크하는 명령

     

     

     

     

     

     

    '프로그래밍 > Docker' 카테고리의 다른 글

    도커 아홉번째  (0) 2024.01.16
    도커 여덟번째  (0) 2024.01.16
    도커 일곱번째  (0) 2024.01.15
    도커 여섯번째  (1) 2024.01.15
    도커 다섯번째  (0) 2024.01.14
Designed by Tistory.