BaeBox

Docker - Persistent Data, Data Volumes & Bind Mounting 본문

개발 관련

Docker - Persistent Data, Data Volumes & Bind Mounting

배모씨. 2019. 10. 23. 17:12
반응형

DB를 띄우고 있는 Container 가 오류가 나서 종료되었다가 다시 켜졌다고 생각해보자.

이미지를 그대로 실행하는 Container 는 아무런 문제가 없을 것이다.

그런데 DB 는?

DB 정보는 다 날아갔을 것이다.

이에 대한 해결책으로 Docker 는 두 가지 방법을 제시한다.

  • volume : make special location outside of container ufs
  • bind mounts : link container path to host path

mysql 을 예로 들고 설명해보겠다.

dockerhub 의 mysql 페이지

 

표기된 상자 내의 아무 docker 파일이나 클릭해보자. 

 

mysql dockerfile

상자 내의 volume 의 경로가 DB 의 정보가 저장되는 공간이다. 

호스트 말고, 컨테이너 내부에. 

그렇다면 DB 의 정보가 저장된 파일을 호스트와 공유한다면, 컨테이너가 사라져도 정보가 저장될 것이다. 

 

명령어 예시: 

  > docker container run -d --name mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=True -v mysql-db:/var/lib/mysql mysql

*docker-compose.yml 이용시

version: '3.1'

services:

  db:

    image: mysql

    command: --default-authentication-plugin=mysql_native_password

    restart: always

    ports:

      - "3306:3306"

    volumes:

      - "/root/docker/sam:/var/lib/mysql"

    environment:

      MYSQL_ROOT_PASSWORD: example

 

가상 볼륨을 마운트 하는 방법도 있다.

귀찮으니 나중에 추가하겠다.

반응형

'개발 관련' 카테고리의 다른 글

Docker - Stack  (0) 2019.10.23
Docker - Docker Swarm  (0) 2019.10.23
Docker - Dockerfile  (0) 2019.10.23
Docker Compose (docker-compose)  (0) 2019.10.23
Docker - Container  (0) 2019.10.23
Comments