#docker #docker-compose #docker-volume
Вопрос:
Я пишу docker-compose.yaml
файл для своего проекта. Я проверил документацию по томам здесь .
Я также понимаю концепцию volume
в docker, что я могу смонтировать том, например -v my-data/:/var/lib/db
, где my-data/
находится каталог на моей хост-машине, в то время /var/lib/db
как путь внутри контейнера базы данных.
Моя путаница связана со ссылкой, которую я привел выше. Там у него есть следующий образец:
version: "3.9"
services:
db:
image: db
volumes:
- data-volume:/var/lib/db
backup:
image: backup-service
volumes:
- data-volume:/var/lib/backup/data
volumes:
data-volume:
Интересно, означает ли это, что я должен создать каталог с именем data-volume
на своей хост-машине? Что делать, если у меня на компьютере есть каталог с путем temp/my-data/
, и я хочу подключить этот путь к контейнеру базы /var/lib/db
данных ? Должен ли я сделать что-то вроде ниже?
version: "3.9"
services:
db:
image: db
volumes:
- temp/my-data/:/var/lib/db
volumes:
temp/my-data/:
Моя главная путаница-это volumes:
раздел внизу, я не уверен, должно ли имя тома быть путем к моему каталогу или должно быть просто буквальным именем, которое я даю, и если это последний случай, то как данное имя может быть сопоставлено temp/my-data/
на моей машине? Образец не указывает на это и неоднозначен, чтобы прояснить это.
Не мог бы кто-нибудь, пожалуйста, прояснить это для меня?
P.S. Я попробовал с вышеприведенным докером-сочинять, как я догадался, закончилось ошибкой:
ERROR: The Compose file './docker-compose.yaml' is invalid because:
volumes value 'temp/my-data/' does not match any of the regexes: '^[a-zA-Z0-9._-]
Ответ №1:
Сопоставленные тома могут быть либо файлами/каталогами на главной машине (иногда называемыми bind mounts
в документации), либо томами docker, которыми можно управлять с помощью docker volume
команд.
volumes:
Раздел в файле docker-compose указывает тома docker, т. е. не файлы/каталоги. Первая докер-композиция в вашем посте использует такой объем.
Если вы хотите сопоставить файл или каталог (как в вашем последнем файле docker-compose), вам не нужно ничего указывать в этом volumes:
разделе.
Тома Docker (указанные в volumes:
разделе или созданные с помощью docker volume create
), конечно, также хранятся где-то на вашем хост-компьютере, но docker управляет этим, и вам обычно не нужно знать, где или в каком формате.
Я думаю, что эта часть документации довольно хорошо объясняет это, я думаю https://docs.docker.com/storage/volumes/
Ответ №1:
Сопоставленные тома могут быть либо файлами/каталогами на главной машине (иногда называемыми bind mounts
в документации), либо томами docker, которыми можно управлять с помощью docker volume
команд.
volumes:
Раздел в файле docker-compose указывает тома docker, т. е. не файлы/каталоги. Первая докер-композиция в вашем посте использует такой объем.
Если вы хотите сопоставить файл или каталог (как в вашем последнем файле docker-compose), вам не нужно ничего указывать в этом volumes:
разделе.
Тома Docker (указанные в volumes:
разделе или созданные с помощью docker volume create
), конечно, также хранятся где-то на вашем хост-компьютере, но docker управляет этим, и вам обычно не нужно знать, где или в каком формате.
Я думаю, что эта часть документации довольно хорошо объясняет это, я думаю https://docs.docker.com/storage/volumes/