[docker] 7. 도커 컴포즈를 익히자

minyeob·2023년 6월 21일
0

aws

목록 보기
8/18
post-thumbnail

chapter 7 도커 컴포즈를 익히자

시스템 구축과 관련된 명령어를 하나의 텍스트 파일(정의 파일)에 기재해 명령어 한번에 시스템 전체를 실행하고 종료와 폐기까지 한번에 하도록 도와주는 도구가 바로 도커 컴포즈 다.

도커 컴포즈 는 시스템 구축에 필요한 설정을 YAML 포맷으로 기재한 정의 파일을 이용해 전체 시스템을 일괄 실행 또는 일괄 종료 및 삭제 할 수 있는 도구다.

  • up 커맨드는 docker의 run 커맨드와 비슷하다. 이미지를 내려받고 컨테이너를 생성 및 실행한다.
  • down 커맨드는 컨테이너와 네트워크를 정지 및 삭제한다. 볼륨과 이미지는 삭제하지 않는다

도커 컴포즈와 Dockerfile 스크립트의 차이점

도커 컴포즈 : 컨테이너와 주변 환경을 생성하고 네트워크와 볼륨까지 함께 만들 수 있다

Dockerfile 스크립트 : 이미지를 만들기 위한 것으로 네트워크나 볼륨은 만들 수 없다.

도커 컴포즈와 쿠버네티스의 차이점

쿠버네티스 : 컨테이너를 관리하는 도구

도커 컴포즈 : 컨테이너를 생성하고 삭제하는 것 뿐으로, 컨테이너 관리 기능은 없다.

[실습] 도커 컴포즈 설치

단계 1 : 도커 컴포즈 설치

윈도우나 macOS 에서는 이미 설치돼 있기 때문에 따로 설치할 필요가 없다.

단계 2 : 도커 컴포즈 실행

도커 컴포즈는 설치가 끝나면 바로 실행 가능한 상태가 된다.

도커 컴포즈를 사용하려면 호스트 컴퓨터에 폴더를 만들고 이 폴더에 정의 파일(YAML 파일)을 배치한다.

정의 파일 의 이름은 미리정해진 docker-compose.yml 이라는 이름을 사용해야 한다.

사람이 일일이 입력하던 명령어를 도커 컴포즈가 대신 입력해주는 역할을 하는 구조다.

정의 파일 은 한 폴더에 하나만 있을 수 있다.

컴포즈 파일을 작성하는 방법

정의 파일 은 YAML 형식을 따른다. 파일의 확장자는 .yml 이며 메모장 등의 텍스트 에디터로 작성하면 된다.

파일 이름은 docker-compose.yml 이라고 짓는다. -f 옵션을 사용해 파일 이름을 지정하면 다른 이름을 사용해도 되지만 그렇지 않다면 정해진 이름을 사용해야 한다.

컴포즈 파일은 맨 앞에 컴포즈 버전을 적고, 그 뒤로 servicesnetworks, volumes 를 차례로 기재한다.

services : 컨테이너 관련 정보

networks : 네트워크 관련 정보

volumes : 볼륨 관련 정보

컴포즈 파일 작성 요령 정리

  • 첫 줄에 도커 컴포즈 버전을 기재
  • 주 항목 services,networks, volumes 아래에 설정 내용을 기재
  • 항목 간의 상하 관계는 공백을 사용한 들여쓰기로 나타낸다
  • 들여쓰기는 같은 수의 배수 만큼의 공백을 사용한다
  • 이름은 주 항목 아래에 들여쓰기한 다음 기재한다.
  • 컨테이너 설정 내용은 이름 아래에 들여쓰기한 다음 기재한다.
  • 여러 항목을 기재하려면 줄 앞에 ‘-’를 붙인다.
  • 이름 뒤에는 콜론 (:) 을 붙인다.
  • 콜론 뒤에는 반드시 공백이 와야 한다(바로 줄바꿈하는 경우는 예외)
  • “#” 뒤의 내용은 주석으로 간주된다
  • 문자열은 작은따옴표(’) 또는 큰 따옴표(”)로 감싸 작성한다.

[실습] 컴포즈 파일 작성

워드프레스 컨테이너는 depends_on 항목을 추가해 의존관계를 설정해야 한다.

단계 1 : docker-compose.yml 파일 생성

메모장 등의 텍스트 에디터를 사용해 컴포즈 파일을 작성한다. 파일이름은 docker-compose.yml 로 한다.

단계 2 : 주 항목 작성

version: "3"
services:
 
networks:
 
volumes:
 

단계 3 : 이름 작성

version: "3"
services:
  mysql000ex11:
  wordpress000ex12:
networks:
  wordpress000net1:
volumes:
  mysql000vol11:
  wordpress000vol12:

단계 4 : MySQL 컨테이너의 정의 작성

version: "3"
services:
  mysql000ex11:
    image: mysql:5.7
    networks:
      - wordpress000net1
    volumes:
      - mysql000vol11:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: myrootpass
      MYSQL_DATABASE: wordpress000db
      MYSQL_USER: wordpress000kun
      MYSQL_PASSWORD: kunpass
  wordpress000ex12:
networks:
  wordpress000net1:
volumes:
  mysql000vol11:
  wordpress000vol12:

단계 5: 워드프레스 컨테이너의 정의 작성

version: "3"
services:
  mysql000ex11:
    platform: linux/x86_64  # 추가된 옵션
    image: mysql:5.7
    networks:
      - wordpress000net1
    volumes:
      - mysql000vol11:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: myrootpass
      MYSQL_DATABASE: wordpress000db
      MYSQL_USER: wordpress000kun
      MYSQL_PASSWORD: wkunpass
  wordpress000ex12:
    depends_on:  # 의존관계 설정
      - mysql000ex11
    image: wordpress
    networks:
      - wordpress000net1
    volumes:
      - wordpress000vol12:/var/www/html
    ports:
      - 8085:80
    restart: always
    environment:
      WORDPRESS_DB_HOST: mysql000ex11
      WORDPRESS_DB_NAME: wordpress000db
      WORDPRESS_DB_USER: wordpress000kun
      WORDPRESS_DB_PASSWORD: wkunpass
networks:
  wordpress000net1:
volumes:
  mysql000vol11:
  wordpress000vol12:

단계 6: 파일 저장

  • MYSQL 8.0을 사용하는 방법
    • Mysql 8.0 대부터 인증 방식이 바뀌었기 때문에 사용하려면 인자가 필요하다.

         command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password

도커 컴포즈 실행

도커 컴포즈는 docker-compose 명령을 사용한다. (up, down, stop 등)

up 커맨드

docker-compose -f 정의_파일_경로 up 옵션
옵션설명
-d백그라운드에서 실행
--no-deps링크 서비스를 시작하지 않음
--build이미지를 빌드
--no-build이미지를 빌드하지 않음
-t, --timeout컨테이너의 타임아웃을 초로 지정(기본 10초)
--scale SERVICE=서비스 수서비스 수를 지정한다.

down 커맨드

컨테이너와 네트워크를 삭제한다.

docker-compose -f 컴포즈_파일_경로 down 옵션
옵션설명
--rmi all모든 이미지를 삭제
--rmi local커스텀 태그가 없는 이미지만 삭제
-v, --volumesCompose 정의 파일의 데이터 볼륨을 삭제

stop 커맨드

컨테이너를 종료한다.

docker-compose -f 컴포즈_파일_경로 stop 옵션

**[Docker] Docker-Compose 주요 명령어 총정리 :** https://kimjingo.tistory.com/108

[실습] 도커 컴포즈 실행

단계 1: 컴포즈 파일을 적절한 위치에 배치

단계 2: 컴포즈 파일의 내용을 실행

docker-compose -f C:\Users\minyeob\Desktop\com_folder\docker-compose.yml up -d

단계 3: 웹 브라우저에서 워드프레스에 접근 가능한지 확인

단계 4 : 컨테이너와 네트쿼으킄 종료 및 삭제

docker-compose -f C:\Users\minyeob\Desktop\com_folder\docker-compose.yml down

단계 5: 뒷정리

down 커맨드를 사용해도 이미지와 볼륨은 삭제되지 않는다. 직접 삭제해야 한다.

profile
백엔드 개발자를 꿈꾸며 공부한 내용을 기록하고 있습니다.

0개의 댓글