Docker - 컴포즈(compose)

SeungTaek·2021년 9월 18일
0

도커(Docker)

목록 보기
2/3
post-thumbnail

본 게시물은 스스로의 공부를 위한 글입니다.
틀린 내용이 있을 수 있습니다.


📒 도커 컴포즈(docker compose)란?

  • 도커 명령어를 파일로 작성 후 실행하는 방법

  • 실무에서는 대부분 도커 컴포즈를 이용한다.

  • 맥이나 윈도우의 경우 docker설치시 자동으로 같이 설치

    • 설치 확인 docker-compose version
  • 리눅스의 경우

sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)"
sudo chmod +x /usr/local/bin/docker-compose

📒 도커 컴포즈 작성 예시

  • Mariadb과 WordPress를 도커 컴포즈로 만들어보자.
//docker-compose.yml
version: '2'
services:
  db:
    image: mariadb:10.5
    volumes:
      - ./mysql:/var/lib/mysql
    restart: always #도커가 죽이면 자동으로 재실행
  	environment:
    	MYSQL_ROOT_PASSWORD: wordpress
      	MYSQL_DATABASE: wordpress
      	MYSQL_USER: wordpress
      	MYSQL_PASSWORD: wordpress
      
  wordpress:
    image: wordpress:latest
    volumes:
      - ./wp:/var/www/html
    ports:
      - "8000:80"
    restart: always
    environment:
    	WORDPRESS_DB_HOST: db:3306
        WORDPRESS_DB_USER: wordpress
        WORDPRESS_DB_PASSWORD: wordpress
  • 실행 docker-compose up
  • 중지 docker-compose down


📒 컴포즈 문법

  • version: '3' 버전에 따라 지원하는 도커 엔진 버전도 다르다.

  • service: 실행할 컨테이너 정의. docker run --name django와 같다고 할수있다.

service:
 diango:
  ...

  • image: 컨테이너에 사용할 이미지 이름과 태그. 태그를 생략하면 자동으로 latest. 이미지가 없으면 자동으로 pull
  service:
   django:
    image: django-sample

  • ports: 컨테이너와 연결할 포트(들). (호스트포트):(컨테이너 포트)
  services:
   django:
   ...
   ports:
   - "8000:8000"

  • environment: 컨테이너에서 사용할 환경변수(들). {환경변수이름}:{값}
  services:
   mysql:
   ...
   environment:
    - MYSQL_ROOT_PASSWORD=somewordpress: '3'

  • volumes: 마운트하려는 디렉터리(들). {호스트 디렉터리}:{컨테이너 디렉터리}
  services:
   django:
   ...
   volumes:
   - ./app:/app

  • restart: 재시작 정책. 종류: "no", always, on-failure, unless-stopped
  services:
   django:
    restart: always

  • build: 이미지를 자체 빌드 후 사용. image 속성 대신 사용. 여기에 사용할 별도의 도커 파일이 필요함
  django:
   build:
    context: .
    dockerfile: ./compose/django/Dockerfile-dev

  • command : 도커 실행 후 도커내에 실행할 명령어
  version: '2'
  
  services:
    app:
      image: php:7
      volumes:
        - ./hello.php:/app/hello.php
      command: "php /app/hello.php"

📒 도커 컴포즈 명령어

  1. up: docker-compose.yml에 정의된 컨테이너를 실행

    • docker-compose up
    • docker-compose up -d: docker run-d옵션과 동일
    • docker-compose up --force-recreate: 컨테이너를 새로 만들기
    • docker-compose up --build : 도커 이미지를 다시 빌드(build로 선언시에만)
  2. start: 멈춘 컨테이너를 재개

    • docker-compose start
    • docker-compose start wordpress: wordpress 컨테이너만 재개
  3. restart: 컨테이너를 재시작

    • docker-compose restart
    • docker-compose restart wordpress: wordpress 컨테이너만 재시작
  4. stop: 컨테이너를 멈춤

    • docker-compose stop
    • docker-compose stop wordpress: wordpress 컨테이너만 멈춤
  5. down: 컨테이너를 종료하고 삭제

    • docker-compose down
  6. logs: 컨테이너의 로그

    • docker-compose logs
    • docker-compose logs -f: 로그 follow
  7. ps: 컨테이너 목록

    • docker-compose ps
  8. exec: 실행 중인 컨테이너에서 명령어 실행

    • docker-compose exec {컨테이너 이름} {명령어}
    • docker-compose exec wordpress bash
  9. build: 컨테이너 build 부분에 정의된 내용대로 빌드

    • build로 선언된 컨테이너만 빌드됨
    • docker-compose build
    • docker-compose build wordpress: wordpress 컨테이너만 build

Reference

생활코딩-도커
인프런 초보를 위한 도커 안내서(subicura)

profile
I Think So!

0개의 댓글