본문 바로가기
docker & kubernetes

컨테이너 사용법 8 | Docker&Kubernetes 학습 31

by 그갸거겨 2024. 12. 14.
728x90
반응형
도커 컴포즈 정의 파일을 작성하는 법을 알아보자

도커 명령어와 도커 컴포즈의 정의파일에 정의되는 내용을 비교

  • 아파치 컨테이너의 컴포즈 파일 예제
    1. version: "3"
    2.  
    3. services:
    4.     apa00ex2:
    5.         image: httpd
    6.         ports:
    7.             - 8080:80
    8.         restart: always
  • apa00ex2 컨테이너를 실행하는 명령어
    • docker run --name apa00ex2 -d -p 8080:80 httpd

 

  • 워드프레스 컨테이너의 컴포즈 파일 예제
    1. version: "3"
    2. d
    3. services:
    4.     wordpress00ex12:
    5.         depends_on:
    6.             - mysql00ex11
    7.         image: wordpress
    8.         networks:
    9.             - wordpress00net1
    10.         ports:
    11.             -8085:80
    12.         restart: always
    13.         environment:
    14.             WORDPRESS_DB_HOST=mysql00ex11
    15.             WORDPRESS_DB_NAME=wordpress00db
    16.             WORDPRESS_DB_USER=wordpress00charm
    17.             WORDPRESS_DB_PASSWORD=wcharmpass
  • wordpress00ex12 컨테이너를 실행하는 명령어
    • docker run --name wordpress00ex12 -dit --net=wordpress00net1 -p 8085:80 -e WORDPRESS_DB_HOST=mysql00ex11 -e WORDPRESS_DB_NAME=wordpress00db -e WORDPRESS_DB_USER=wordpress00charm -e WORDPRESS_DB_PASSWORD=wcharmpass wordpress

 

컴포즈 파일(정의 파일) 작성 전, 확인 사항

  • 정의 파일은 YAML 형식을 따르고, 확장자는 .yml이다.
    • 메모장 등의 텍스트 에디터로 작성하면 되고, Linux는 nano 에디터 등을 사용한다.
  • 파일 이름은 docker-compose.yml 로 하거나, -f 옵션을 사용해 다른 이름을 파일 이름으로 사용해도 된다.
  • 특정 이름을 사용해야 하는 게 아니라면, 정해진 이름인 docker-compose.yml로 파일 이름을 만든다.

컴포즈 파일(정의 파일)을 작성하는 방법

  • 제일 먼저 컴포즈 버전을 적고, 그 뒤로 services와 networks, volumes를 차례로 기재한다.
  • services는 쉽게 말해 컨테이너에 대한 내용이다.
    • 도커 컴포즈와 쿠버네티스에서는 컨테이너의 집합체를 서비스(services)라고 부른다.
  • 작성요령: 주 항목 → 이름 추가 → 설정과 같은 순서로 생각하면 쉽다.
  • 주 항목은 services, networks, volumes 등이 있고, 주 항목 아래에 정의 내용이 기재되므로 콜론(:)을 붙인다.
컴포즈 파일의 작성 예(주 항목)

version: "3"   ← 버전 기재
services:       ← 컨테이너 관련 정보
networks:      ← 네트워크 관련 정보
volumes:       ← 볼륨 관련 정보
  • 주 항목 아래에는 이름을 기재하되, 주 항목보다 한 단 들여쓰기해서 적는다.
  • 한 단의 공백 개수는 상관없고 탭은 사용할 수 없다. 또한, 한 단을 '공백 한 개'로 정했다면 그 뒤로도 계속 같은 개수의 공백을 한 단으로 사용해야 한다.
  • YAML 형식에서는 공백에 따라 의미가 달라진다.
  • 이름 뒤에는 반드시 콜론(:)을 붙여야 하고, 해당 줄에 이어서 설정을 기재하려면 콜론 뒤에 공백이 하나 있어야 한다.
    • 이 자리에 공백을 넣는 것을 잊어버리기 쉽기 때문에 오류 발생 시 여기부터 확인하는 것이 좋다.
컴포즈 파일의 작성 예(이름을 추가)

version: "3"
services:
  컨테이너_이름1:
  컨테이너_이름2:
networks:
  네트워크_이름1:
volumes:
  볼륨_이름1:
  볼륨_이름2:
  • 이름을 기재한 다음에는 각 컨테이너의 설저을 기재한다.
    • 기재할 내용이 한 가지라면 콜론 뒤에 이어 적는다.(사이에 공백 필수)
    • 내용이 여러 개라면 줄을 바꿔 하이픈(-)을 앞에 적고 들여쓰기를 맞춘다.
  • 설정을 작성할 때 역시 한 단을 들여써야 한다.
    • 앞에서 이름을 적을 때 들여쓰기 한 단을 '공백 두 개'로 했다면, 설정은 주 항목보다 공백 네 개를 들여쓴 셈이다.
  • 줄을 바꿔 하이픈을 앞에 적은 행은 한 단을 더 들여써야 한다. 주 항목과 비교하면 공백 여섯 개를 들여쓴 셈이다.
컴포즈 파일의 작성 예(설정을 기재)

version: "3"
services:
  컨테이너_이름1:
    image: 이미지_이름
    networks:
      - 네트워크_이름
    ports:
      - 포트_설정
    ...
  컨테이너_이름2:
    image: 이미지_이름
    ...
networks:
  네트워크_이름1:
  ...
volumes:
  볼륨_이름1:
  볼륨_이름2:
  ...
728x90