2019.05.01 - docker container volume 옵션을 활용해서 data는 그대로 둔 채 postgres 버전업 하기, Docker compose 개론

postgres 9.6.1, postgres 9.6.2 설치

docker container run -d --name psql -v psql:/usr/lib/postgres/data postgres:9.6.1

-> postgres 9.6.1을 run하는데 이 때 사용하는 볼륨에 psql이라는 이름을 붙여 줌.

docker logs psql

-> log 체크

docker container run -d --name psql2 -v psql:/usr/lib/postgres/data postgres:9.6.2

-> psql이라는 볼륨을 붙여서 postgres 9.6.2를 run함

docker volume, bind mounting 에 관해서는.. 호스트의 파일을 그대로 이용해서 도커를 실행시킬 수 있다는 것이 장점.

DOCKER COMPOSE

docker compose template

version: '3.1'  # if no version is specificed then v1 is assumed. Recommend v2 minimum

services:  # containers. same as docker run
  servicename: # a friendly name. this is also DNS name inside network
    image: # Optional if you use build:
    command: # Optional, replace the default CMD specified by the image
    environment: # Optional, same as -e in docker run
    volumes: # Optional, same as -v in docker run
  servicename2:

volumes: # Optional, same as docker volume create

networks: # Optional, same as docker network create

version : '2'

services:
  drupal:
    image: drupal
    ports:
     - '8080:80'
    volumes:
     - drupal-modules:/var/www/html/modules

  psql:
    image: postgres:9.6.1
    environment:
     - POSTGRES_PASSWORD=helloworld

volumes:
  drupal-modules:

docker compose는 말 그대로 docker container를 run 하기 위한 일종의 조립 레시피와 같다. 이 전에는 docker container run -p 80:80 --name something -e KEY=VALUE nginx
^ 이런 식으로 container를 실행시켰다면 이제는 compose 파일을 통해 여러개의 컨테이너를 실행하며 네트워크, 볼륨도 같이 설정할 수 있다.

컨테이너간의 의존성도 같이 설정하여 하나의 컨테이너가 다른 컨테이너에 의존한다면 의존 되는 컨테이너도 같이 실행할 수 있다.

compose 파일은 config로 많이 사용하는 yaml이 있고 로컬환경이나 테스트를 위해서는 docker-compose라는 CLI 툴을 사용하기도 한다.

docker-compose는 버전이 있다. 각각의 버전마다 설정할 수 있는 값들이 추가되었기 때문에 최소 2 이상의 버전을 사용하는 것이 좋다.

댓글

이 블로그의 인기 게시물

로컬 Tomcat 서버 실행속도 개선

2019.05.23 - SQLAlchemy 의 객체 상태 관리 (expire, refresh, flush, commit) 에 관한 이해

2020.02.17 Python의 multiprocessing 중 Pool.map(), chunksize에 관한 내용