TIL

5.1(1) 도커 컴포즈 설치와 야믈 코드

도커 컴포즈는 공통성을 갖는 컨테이너 애플리케이션 스택을 YAML 코드로 정의하는 정의서이며 그것을 실행하기 위한 다중 컨테이너 실행 도구다.

5.1.1 도커 컴포즈 설치

Ubuntu 리눅스 기반으로 도커 컴포즈 설치

# 깃허브에 저장된 현재 호스트 운영체제에 맞는 최신 버전 도커 컴포즈 파일 설치
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

# 실행 권한 설정 및 절대 경로 문제로 발생하는 오류 대비를 위한 심벌릭 링크 설정
$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# kevin 사용자 계정에 소유권 지정
$ sudo chown kevin /usr/bin/docker-compose

# 버전 변경을 위한 재설치 및 삭제 시 원본과 링크 파일 삭제
$ sudo rm /usr/local/bin/docker-compose
$ sudo rm /usr/bin/docker-compose

5.1.2 도커 컴포즈 야믈 코드 작성

version: "3.8"
services:
  서비스명1:
    # 애플리케이션 설정값 정의1
  서비스명2:
    # 애플리케이션 설정값 정의2
...
networks:
  # 네트워크 설정, 미지정 시 자동 생성
volumes:
  # 볼륨 생성

단계별 작성 방법 1. 버전 정의

2. 서비스 정의

version: '3.8'
services: 
  myweb:
    image: nginx:latest
  mydb:
    image: mariadb:10.4.6

3. 네트워크 정의

4. 볼륨 정의

version: '3.8'
services:
  mydb:
    image: mysql:5.7
    container_name: mysql_app
    volumes:
      - db_data:/var/lib/mysql

  myweb:
    depends_on:
      - mydb
    image: wordpress:latest
    container_name: wordpress_app
    volumes:
      - web_data:/var/www/html
...
volumes:
  db_data: {}
  web_data: {}
# {} 생략 가능, 도커가 관리하는 볼륨 생성을 의미

5. 도커 명령어와 도커 컴포즈 야믈 코드 비교

| 요구사항 | 도커 명령 | 도커 컴포즈 옵션 | | — | — | — | | 컨테이너명 | —name | container_name; | | 포트 연결 | -p | ports: | | 네트워크 구성 | —net | networks: | | 재시작 | —restart | restart: | | 볼륨 | -v(—volume) | volumnes: | | 환경 변수 | -e | environment: | | 컨테이너 간 연결 | —link 컨테이너명:서비스명 | depends_on | | 이미지 | 이미지명 | image; |

도커 컴포즈는 개발 및 테스트 단계에 적합한 오케스트레이션 도구이다. 실제 운영에서는 관리적 요소가 많이 필요하기에 고급 오케스트레이션 기능을 사용하려면 쿠버네티스나 도커 스웜을 이용해야 한다.