[Docker] Docker Compose 에서 volume 사용 하기
Cloud&Container 2020. 3. 30. 14:40기본 문서는 아래 링크 참고 하시면 됩니다.
Reference)
https://docs.docker.com/compose/compose-file/#volumes
https://docs.docker.com/compose/compose-file/#volume-configuration-reference
두 가지의 syntax 를 제공 하고 있습니다.
- Short Syntax
- Long Syntax
1. Short Syntax
https://docs.docker.com/compose/compose-file/#short-syntax-3
valumes:
- ${SOURCE-PATH}:${DESTINATION-PATH}:${MODE}
${SOURCE-PATH} 에는 Host의 Path 또는 Volume Name 을 사용 할 수 있습니다.
Case 1) bind mount 형식으로 volume 생성이 됩니다.
services:
...중략...
volumes:
- /mount/data:/usr/share/elasticsearch/mnt:rw
$ docker inspect ${SERVICE-NAME}
...중략...
"Mounts": [
{
"Type": "bind",
"Source": "/mount/data",
"Destination": "/usr/share/elasticsearch/mnt",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
}
]
...중략...
Case 2) volume 형식으로 volume 생성이 됩니다.
- volume 사용 시 주의 사항은 Container 내부에 이미 생성 되어 있는 File System 을 사용
services:
...중략...
volumes:
- mount01:/usr/share/elasticsearch/data:rw
...중략...
volumes:
mount01:
driver: local
$ docker volume ls --format "{{.Name}} : {{.Mountpoint}}"
megatoi-monitor-elasticsearch_mount01 : /var/lib/docker/volumes/megatoi-monitor-elasticsearch_mount01/_data
$ docker inspect ${SERVICE-NAME}
...중략...
"Mounts": [
{
"Type": "volume",
"Name": "megatoi-monitor-elasticsearch_mount01",
"Source": "/var/lib/docker/volumes/megatoi-monitor-elasticsearch_mount01/_data",
"Destination": "/usr/share/elasticsearch/data",
"Driver": "local",
"Mode": "rw",
"RW": true,
"Propagation": ""
}
],
...중략...
2. Long Syntax
https://docs.docker.com/compose/compose-file/#long-syntax-3
기본 옵션만 살펴 보겠습니다.
자세한건 위 문서를 참고하세요.
- type
- volume
- Volume 선언 시 Source 는 volumes: syntax 에서 named volume 선언이 되어 있어야 합니다.
- bind
- Source File System 이 만들어져 있어야 합니다.
- volume
- source
- Host File System 을 작성 합니다.
- Short Syntax 에서 처럼 Host 의 Path 또는 Volume Name 을 사용 할 수 있습니다.
- target
- Container File System 을 작성 합니다.
Case 1) bind mount 형식으로 volume 생성이 됩니다.
services:
...중략...
volumes:
- type: bind
source: /mount/data
target: /usr/share/elasticsearch/mnt
...중략...
$ docker inspect ${SERVICE-NAME}
...중략...
"Mounts": [
{
"Type": "bind",
"Source": "/mount/data",
"Destination": "/usr/share/elasticsearch/mnt",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
...중략...
Case 2) volume 형식으로 volume 생성이 됩니다.
- volume 사용 시 주의 사항은 Container 내부에 이미 생성 되어 있는 File System 을 사용
services:
...중략...
volumes:
- type: volume
source: mount01
target: /usr/share/elasticsearch/data
...중략...
volumes:
mount01:
driver: local
...중략...
$ docker inspect ${SERVICE-NAME}
...중략...
"Mounts": [
{
"Type": "volume",
"Name": "megatoi-monitor-elasticsearch_mount01",
"Source": "/var/lib/docker/volumes/megatoi-monitor-elasticsearch_mount01/_data",
"Destination": "/usr/share/elasticsearch/data",
"Driver": "local",
"Mode": "z",
"RW": true,
"Propagation": ""
}
],
...중략...
hort Syntax 의 Case 2) 와 같이 사용도 가능 합니다.