퍼시스턴스 다루기

## 데이터 볼륨
- 데이터 볼륨은 컨테이너를 파기해도 디스크에 그대로 남으므로 컨테이너로 상태를 갖는 애플리케이션을 실행하는 데 적합하다
- `-v` 옵션을 사용한다.
- `$ docker container run -v ${PWD}:/workspace example/echo:latest`
- 호스트 안의 특정 경로에 의존성이 생기기 때문에 호스트 쪽 데이터 볼륨을 잘못 다루면 애플리케이션에 부정적 영향을 미칠 수 있다.
## 데이터 볼륨 컨테이너
- 데이터 볼륨 컨테이너의 볼륨은 도커에서 관리하는 영역인 호스트 머신의 /var/lib/docker/volume 에 위치한다.
### MySQL 데이터를 데이터 볼륨 컨테이너로 지정하는 예
- 데이터 볼륨 컨테이너  Dockerfile
```
FROM busybox
VOLUME /var/lib/mysql
CMD ["bin/true"]
```
- 데이터 볼륨 컨테이너 이미지 빌드
```
$ docker image build -t example/mysql-data:lastest .
```
- 데이터 볼륨 컨테이너 실행
```
$ docker container run -d --name mysql-data example/mysql-data:lastest
```
- mysql 컨테이너에 데이터 볼륨 컨테이너 연결 
```
$ docker container run -d --rm --name mysql \
-e "MYSQL_ALLOW_EMPTY_PASSWORD=yes" \
-e "MYSQL_DATABASE=volumn_test" \
-e "MYSQL_USER=example" \
-e "MYSQL_PASSWORD=example" \
--volume-from mysql-data \
mysql:5.7
```
- 데이터 볼륨은 충분히 좋은 기능이지만, 어디까지나 그 범위가 같은 도커 호스트 안으로 제한된다.
- 데이터를 익스포트하려면 
```
$ docker container run -v ${PWD}:/tmp \
	--volumes-from mysql-data \
	busybox \
	tar cvzf \tmp\mysql-backup.tar.gz /var/lib/mysql
```

댓글

이 블로그의 인기 게시물

Session 대신 JWT를 사용하는 이유

VSCode에서의 VIM 단축키와 키보드 구매 가이드

우분투에서 테스트링크(testlink)와 맨티스(mantis)로 테스팅 서버 구성하기