1. Docker 코리아 캐주얼 토크 :
boot2docker 사용시 컨테이너
에서 생성한 데이터를 유지하기
2. # boot2docker 사용시 컨테이너에서 생성한 데이터를
유지하는 방법
* 호스트 컴퓨터의 /Users 폴더에 마운트
* boot2docker 가상머신 내부의 폴더에 마운트
* 볼륨 컨테이너 사용
3. # 호스트 컴퓨터의 /Users 폴더에 마운트
```
$ docker run
-p 5432:5432
-v ~/postgresql:/var/lib/postgresql/data
postgres:9.4
```
```
initdb: could not create directory "/var/lib/postgresql/data/global":
Permission denied
```
4. boot2docker 는 `bootdocker up` 실행시 다음과 같이 호스트 폴더를 VM 으로 마
운트
* Users share at /Users
* /Users share at /Users
* c/Users share at /c/Users
* /c/Users share at /c/Users
* c:/Users share at /c/Users
5. boo2docker 에서 /Users 를 docker:staff 계정을 사용해 자동으로 마운트
컨테이너에서 새로운 계정 생성시 boot2docker 와 다른 UID/GID 를 가지게된다.
파일 생성과 삭제는 폴더 권한을 777로 변경해 해결
하지만 하드링크 생성은 VirtualBox의 버그로
(https://www.virtualbox.org/ticket/818) 여전히 동작하지 않는다.
관련 이슈
: https://github.com/boot2docker/boot2docker/issues/581#issuecomm
ent-60309186
> 호스트의 데이터를 바로 읽을 경우 유용
> 불필요하게 호스트의 파일 및 폴더의 권한을 변경해야 해야 한다
6. # boot2docker 가상머신 내부의 폴더에 마운트
```
$ docker run
-p 5432:5432
-v /var/lib/boot2docker/postgresql:/var/lib/postgresql/data
postgres:9.4
```
`boot2docker init` 명령어 실행시 다음 2개의 가상디스크를 생성하고 VM에 마운트
* /var/lib/docker
* /var/lib/boot2docker
> 가상 디스크는 `boot2docker delete` 명령어 실행시 삭제
7. # 볼륨 컨테이너 사용
```
$ docker run --name pg-data
-v /var/lib/postgresql/data
busybox
$ docker run
-p 5432:5432
--volumes-from pg-data
postgres:9.4
```
> 볼륨 컨테이너의 데이터는 `/var/lib/docker` 가 지워지지 않는한 유지
8. # 결론
DB의 데이터를 유지 시키는 용도로 볼륨 컨테이너 사용,
호스트의 데이터를 읽기 위한 용도로 /Users 마운트