Как объявить docker томов на внешнем жестком диске в docker Compose - PullRequest
4 голосов
/ 17 июня 2020

Из-за нехватки места на моем локальном компьютере мне нужно убедиться, что мои docker контейнеры хранят свои данные на моем внешнем жестком диске.

В проекте docker, который я использую, есть файл docker compose, и он определяет количество томов, например:

version: "2"
volumes:
  pgdata:
  cache:
services:
  postgres:
    image: "openmaptiles/postgis:${TOOLS_VERSION}"
    volumes:
      - pgdata:/var/lib/postgresql/data

Эти тома в конечном итоге существуют на моем локальном компьютере. Я хотел бы изменить их местоположение где-нибудь на моем внешнем диске, например / Volumes / ExternalDrive / docker /

Как мне go об этом?

Я прочитал docker документация по томам и docker -compose , но не может найти способ указать путь, по которому должен существовать том.

Если бы кто-нибудь мог указать путь, я был бы очень признателен.

1 Ответ

1 голос
/ 17 июня 2020

Вы можете изучить и протестировать дополнительные функции, связанные с томами, с помощью справки CLI, а затем транспонировать для создания.

docker volume create --help

https://docs.docker.com/engine/reference/commandline/volume_create/


Обратите внимание, что приведенный ниже пример может не работать на Windows, поэтому встроенный локальный драйвер на Windows не поддерживает никаких параметров, но если вы используете docker на Linux, следующий файл компоновки должен выполнить эту работу. :

version: "2"
volumes:
  pgdata:
    driver: local
    driver_opts:
      type: 'none'
      o: 'bind'
      device: '/path/to/the/external/storage'
  cache:

services:
  postgres:
    image: "openmaptiles/postgis:${TOOLS_VERSION}"
    volumes:
      - pgdata:/var/lib/postgresql/data


Вы также можете изменить параметры запуска docker, чтобы данные сохранялись в выбранном вами месте. Вот руководство: https://linuxconfig.org/how-to-move-docker-s-default-var-lib-docker-to-another-directory-on-ubuntu-debian-linux


В качестве альтернативы, если вам удобнее пытаться решить эту проблему в ОС, а не docker, вы можете попробовать некоторые трюки в на уровне файловой системы для создания символической c ссылки в / var / lib / docker / volume / для указания на ваше внешнее хранилище, но будьте осторожны и сделайте резервную копию всего . Я лично никогда не пробовал это сделать, но считаю, что это должно быть прозрачно для драйвера хранилища docker.

...