본문 바로가기
Devops/docker

[Docker] #5 docker-compose

by 거북이주인장 2022. 11. 10.

인프런 subicura님의 도커 기초 강의를 듣고 정리한 내용임을 미리 밝혀둡니다.


지난 포스팅에서는 docker run 명령어와 기타 다른 도커 명령어에 대해서 살펴보았다.

문득, 도커 명령어에 다양한 옵션이 있고 많은 옵션을 사용할 수록 docker run 명령어의 가독성이 떨어지지 않을까 싶었다. 예를 들어, 워드 프로세스를 도커 컨테이너를 띄우는 명령어는 아래와 같다.

 

$ docker run -d -p 3306:3306 \
 -e MYSQL_ROOT_PASSWORD: wordpress \
 -e MYSQL_DATABASE: wordpress \
 -e MYSQL_USER: wordpress \
 -e MYSQL_PASSWORD: wordpress \
 --name mysql \
 -v ./mysql:/var/lib/mysql \
 mariadb:10.9

 

-e, --network, --name, -v 옵션 등 벌써 여러개의 옵션을 사용했다. 좀 더 가독성 있게 명령어를 작성할 수 있는 방법은 없을까? 이런 필요성 때문에 docker-compose 명령어가 등장했다.

docker-compose 의 역할


앞서 말했듯이, docker-compose는 docker run 명령어를 더 가독성 있게, 실수 없이 작성하기 위한 하나의 방법이다. docker-compose을 통해 여러개의 컨테이너를 띄우는 명령어를 하나의 yml 파일에서 모두 처리할 수 있다.

아래는 mariadb를 기본으로하는 워드프로세스 컨테이너를 띄우는 yml 파일이다.

 

version: '2'
services:
  db:
    image: mariadb:10.9
    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_PASSWORD: wordpress

 

 

  • 두개의 컨테이너를 하나의 yaml 파일에서 관리하고 있으므로 편리하다.
  • 각 컨테이너의 여러 옵션을 정형화된 형식으로 볼 수 있다.

docker-compose 명령어


up 명령어

$ docker-compose up
$ docker-compose up -d # detacted mode
$ docker-compose up --force-recreate # 컨테이너 새로 만들기

start / restart / stop 명령어

$ docker-compose start(restart/stop)
$ docker-compose start(restart/stop) wordpress # wordpress 컨테이너만 시작

ps 명령어

$ docker-compose ps # 컨테이너 목록

exec 명령어

실행중인 컨테이너에서 명령어를 실행할 수 있다.

$ docker-compose exec {container name} {command}
$ docker-compose exec wordpress bash

 

'Devops > docker' 카테고리의 다른 글

[Docker] #4 기본 명령어  (0) 2022.11.10
[Docker] #3 docker run 명령어  (0) 2022.11.10
[Docker] #2 Docker vs Virtual Machine  (0) 2022.11.09
[Docker] #1 도커란 무엇인가  (0) 2022.11.09

댓글