05. Docker compose

2024. 2. 12. 00:45Docker & kubernetes

  • Docker compose
    • 여러 개의 컨테니어 옵션과 환경을 정의한 파일(YAML)을 읽어 컨테이너를 순차적으로 생성하는 방식으로 동작하는 시스템
    • docker compose를 쓰기 위해서는 반드시 컨테니어 설정이 정의된 YAML 파일을 작성해야함
    • 리눅스 같은 경우 따로 docker compose 설치를 해야함
      • 파일을 github에서 다운받고, 받은 파일을 "/usr/local/bin/"에 "docker-compose"라는 이름으로 저장
      • chmod +x /usr/local/bin/docker-compose 이후, docker-composer -v로 설치 잘 되었는지 확인 가능
  • 일반적으로 docker compose는 현재 디럭터리의 이름으로 된 프로젝트를 제어
    • "-p" 옵션으로 제어할 프로젝트를 지정할 수 있음
    • docer-compose -p {프로젝트 이름}
  • YAML 파일
    • 크게 버전 정의, 서비스 정의, 볼륨 정의, 네트워크 정의로 구성됨
      • 가장 많이 사용하는 것은 서비스 정의
      • 볼륨과 네트워크 정의는 서비스로 생성된 컨테이너에 선택적으로 사용 가능
    • 일반적으로 현재 디렉터리 혹은 상위 디렉터리에 있는 "docker-compose.yml" 파일을 찾아 컨테이너를 실행하지만, 파일위치를 직접 입력해줄 수 있음
      • docker-compose -f {파일 경로}
    • 버전 정의
      • 일반적으로 yml 파일 가장 위에 들어감
      • 최신 버전을 사용하는 것을 권장
    • 서비스 정의
      • docker compose로 생성할 컨테이너 옵션을 정의
      • 각 서비스는 컨테이너로 구현되고 하나의 프로젝트로서 도커 컴포즈에 의해 관리됨
      • 서비스 이름들은 service의 하위 항목으로 정의되고 컨테이너 옵션은 서비스 이름의 하위 항목에 정의됨
        • 하위 항목: image, links, enviroment, command, 네트워크 정의, 볼륨 정의 등
    • docker-compose config
      • yml파일의 검사하여 오타나 파일 포맷이 적절한지 확인해줌
      • "-f" 옵션으로 yml 파일 경로 지정 가능
    • 만약 네트워크 정의를 하지 않는다면?
      • 도커 컴포즈는 프로젝트 별로 브리지 타입의 네트워크를 생성하여 사용함
    • 예시 yml 파일
version: '3.0'
	services:
    	web:
        	image: test
            ports:
            	-"80:80"
     	mysql:
        	image: sql
            command: mysql

 

'Docker & kubernetes' 카테고리의 다른 글

04. Dockerfile  (0) 2024.01.17
03. 유용한 Docker 명령어 목록  (0) 2024.01.09
02장. 이미지와 컨테이너  (0) 2024.01.06
1장. Docker 와 가상환경  (0) 2024.01.06