일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ...$$restProps
- react
- golang
- TypeScript
- docker
- GraphQL
- mock
- JavaScript
- svelte
- cron
- IAC
- testing
- githook
- smui
- nestjs
- 인라인핸들러
- Terraform
- PostgreSQL
- onDestory
- go
- 도커
- 번역
- docker-network
- GIT
- reactjs
- bitwiseNot
- apiTest
- :=
- Svelte LifeCycle
- 도커컨테이너
- Today
- Total
Den`s blog
도커 컨테이너와 데이터 공유하기, Docker Volume 본문
도커 이미지로 컨테이너를 생성하면 이미지는 읽기 전용이 되며, 컨테이너의 변경 사항만 별도로 저장해서 각 컨테이너의 정보를 보존한다.
그러나, 이러한 점에는 치명적인 단점이 있다. 컨테이너를 삭제하면 변경된 정보도 삭제된다는 것이다, mysql 의 예제로 보면 데이터가 보존되지 않는 다는 점이다.
이를 방지하기 위해 컨테이너의 데이터를 영속적(Persistent) 데이터 활용할 수 있는 방법이 몇가지가 있다.
그 중 가장 활용하기 쉬운 방법이 볼륨(Volume)을 활용하는 것이다.
볼륨을 활용하는 방법도 여러가지가 있다.
1. 도커 볼륨 공유
아래 명령어를 입력해 postgre 데이터 베이스를 생성하고, 테이블을 생성해준다.
$ docker run -d -e POSTGRES_PASSWORD=password -p 5432:5432 --name db_test -v postgres13-data:/var/lib/postgresql/data postgres // 데이터 베이스 생성
$ docker rm -f `docker ps -a -q` // 실행/중지 중지 중인 도커컨테이너가 모두 지워지니 주의 바람
데이터 베이스를 생성하고 컨테이너를 아예 지워보았다. 나는 test 와 den_test 라는 데이터베이스를 만들었고, 맨 윗줄의 똑같은 명령어를 입력해 다시 컨테이너를 생성해보았다.
결과는 위의 화면과 같이 데이터가 유지되는 것을 볼 수 있다. 또한 도커 Volume에 생성된것을 볼 수 있다.
2. 볼륨 컨테이너
두 번째 방법은 -v 옵션으로 볼륨을 사용하는 컨테이너를 다른 컨테이너와 공유하는 것이다.
컨테이너를 생성할 때 --volumes-from 옵션을 설정하면 -v 또는 --volume 옵션을 적용한 컨테이너의 볼륨 디렉토리를 공유할 수 있다. 그러나 이는 직접 볼륨을 공유하는 것이 아닌 -v 옵션을 적용한 컨테이너를 통해 공유하는 것이다.
3. 호스트 볼륨 공유
1과 달리 도커의 볼륨이 아닌 호스트의 볼륨을 공유하는 것이다. 도커 볼륨과 다른 것은 -v 이후에 디렉토리를 지정할 때 / 로 시작하면 된다.
'Docker' 카테고리의 다른 글
Docker Network 기능 (0) | 2021.07.14 |
---|---|
도커 네트워크와 그 구조 (0) | 2021.07.13 |
Docker 로 워드프레스, mysql 실행하기 (0) | 2021.07.10 |
도커 컨테이너를 외부에 노출/제공 하기! (0) | 2021.07.04 |
도커 컨테이너 기본 다루기 (0) | 2021.06.28 |