Cloud/Docker

[따배도] 8. Docker Container Storage

Tony Lim 2022. 1. 20. 15:21

Volume 이 뭘까

union file system(overlay) = docker가 readonly layer 와 read write layer를 하나인것 처럼 동작을 하게 해준다.

docker rm 명령어는 rw, ro layer들이 사라진다. mysql의 경우 기존의 데이터들도 그냥 다 날라간다.

cotainer에서 만든 data를 저장하도록 Volume을 만들면 된다. /var/lib/mysql 을 /dbdata에 저장해줘~

 

아무 옵션을 안준다면 rw 으로 동작한다.

ro 옵션을 써주게되면 /webdata에 있던것을 read only로 /var/ww/html 로 옮겨서 읽게 된다. 쓰기 불가능

host path를 안주게되면 UUID 로 디렉토리를 자기가 만든다.

 

web generator 가 producer 역할을 해서 volume에 데이터를 생성하면 webserver가 consumer로 웹서비스를 Volume 데이터를 통해 하게 된다

 

 

실습

mysql db 의 데이터를 한번 생성해 보자

docker exec -it db /bin/bash 로 컨테이너 안에서 database tony를 만들었다.

이제 /dbdata에 있다는것을 확인 할 수 있다. 여기에 영구적으로 보존이 되는것이다.

 

따로 host 주소를 명시하지 않으면 기본적으로 /var/lib/docker/volumes/{UUID}/_data로 volume mount 가 된다.

docker volume ls 를 통해 생성된 volume을 보고 docker volume rm 을 통해 지울 수 있다.

 

host에 있던 /webdata volume을 read only로 잘 사용한것을 확인 할 수 있다.

volume 내용이 바뀌면 reload할시 바뀐 데이터를 보여주게 된다.

 

df 명령어로 10초마다 index.html 에 작성한다. 이 작성된 정보를 다른 ngnix container에서 volume 으로 사용하게 된다.