[docker] docker-compose.yml의 명명 된 볼륨에 대한 호스트 경로를 설정하는 방법

아래 예제는 volume이라는 dbdata를 만들고 db 서비스 내에서 참조합니다 .

version: '2'
services:
  db:
    image: mysql
    volumes:
      - dbdata:/var/lib/mysql
volumes:
  dbdata:
    driver: local

( https://stackoverflow.com/a/35675553/4291814에서 )

볼륨의 기본 경로는 다음과 같습니다.

/var/lib/docker/volumes/<project_name>_dbdata

내 질문은 dbdata볼륨 에 대한 호스트의 경로를 구성하는 방법입니다 .



답변

으로 local볼륨 드라이버 임의의 마운트를 사용할 수있는 기능을 제공; 바인드 마운트 를 사용하면 정확히이 작업을 수행 할 수 있습니다.

에 장착됩니다 명명 된 볼륨을 설정하려면 /srv/db-data, 당신은 docker-compose.yml다음과 같을 것이다 :

version: '2'
services:
  db:
    image: mysql
    volumes:
      - dbdata:/var/lib/mysql
volumes:
  dbdata:
    driver: local
    driver_opts:
      type: 'none'
      o: 'bind'
      device: '/srv/db-data'

compose 파일 형식의 버전 2로 테스트 하지는 않았지만 https://docs.docker.com/compose/compose-file/compose-versioning/#version-2 는 작동하지 않아야 함을 나타내지 않습니다.

Windows에서도 테스트하지 않았습니다 …


답변

명명 된 볼륨의 위치는 docker에 의해 관리됩니다. 위치를 직접 지정하려는 경우 호스트 디렉토리를 “바인드 마운트”하거나 경로를 지정할 수있는 볼륨 플러그인을 사용할 수 있습니다.

최근에 게시 한 다른 답변에서 몇 가지 세부 사항을 찾을 수 있습니다. https://stackoverflow.com/a/36321403/1811501


답변

현재 docker-compose v3.2다음과 같이 지금 그것을 할 수 있습니다 :

참고 : version: "3"최신 / 최신 V3를 사용할 것이라고 생각했듯이 많은 경우를 사용하지 않으므로 아래 구성 방법을 사용하려면 v3.0최소한 지정해야 3.2합니다.

https://docs.docker.com/compose/compose-file/#volumes

version: "3.2"
services:
  db:
    image: postgres:latest
    volumes:
      - type: volume
        source: /opt/db/vols/dbdata
        target: /var/lib/postgresql/data
        volume:
          nocopy: true



volumes:
   dbdata:

노트 :

이름이 지정된 볼륨은 그림과 같이 최상위 볼륨 키 아래에 나열되어야합니다.


답변