Можно ли установить том из файла Docker? если нет, то лучший способ сделать это?Могу ли я установить том из файла Docker?
Я знаю, что вы можете сделать это с помощью обычных команд Docker в командной строке, но есть ли лучший способ сделать это?
Можно ли установить том из файла Docker? если нет, то лучший способ сделать это?Могу ли я установить том из файла Docker?
Я знаю, что вы можете сделать это с помощью обычных команд Docker в командной строке, но есть ли лучший способ сделать это?
К сожалению, это не это можно сделать во время сборки изображения.
Я думаю, что причиной может быть переносимость? Я не совсем уверен здесь - будет хорошо, если кто-нибудь сможет это объяснить дальше.
Но я предполагаю, что если Docker позволит пользователям монтировать тома на сборке, то Docker должен будет предвидеть и обрабатывать различные типы файловых систем, например Windows vs Unix. Также, если путь к каталогу, который предполагается использовать для установки, не существует на другом хосте?
Во всяком случае, я не совсем уверен, что ваш случай использования, но вы должны быть в состоянии использовать команды ADD
или COPY
для перемещения файлов из файловой системы вашего хоста в изображение во время сборки и использовать перемещенные файлы для других целей как установка и т.д.
См:
https://docs.docker.com/engine/reference/builder/#/add
Q: Так что это лучший подход?
A: Я думаю, что нет стандартного подхода для установки объема. Обычно я устанавливаю мой монтаж в файле docker-compose
.
См:
https://docs.docker.com/compose/compose-file/#/volumes-volume-driver
спасибо за это, плюс у меня есть еще один вопрос: как смонтировать текущую папку в качестве тома, например, я хочу сделать что-то вроде этого: docker run -i -t -v
@ user3547774 Я могу попробовать использовать команду '\' pwd \ '' для запуска выражения для получения текущего рабочего каталога.Пример: 'docker run -i -t -v \' pwd \ ':/usr/TmpVolume ubuntu/bin/bash' Рад помочь, дайте мне знать, если это сработает для вас –
Я пробовал это, не работал. что делает 'pwd'? Он создал том внутри контейнера, но содержимое, доступное в системе хоста, отсутствовало. – user3547774
В контексте Dockerfile
, Вы имеете ограниченный доступ для размещения ресурсов, в той степени, что нужно на самом деле построить изображение контейнера. Чтобы проиллюстрировать, должны ли вы монтировать тома хоста, запускать контейнеры или получать доступ к их ресурсам, что, вероятно, будет соответствовать изображению, которое может быть создано для вас только в вашей текущей среде.
Если вам действительно нужны ресурсы хоста, установленные в качестве тома в течение всего времени сборки, вы можете посмотреть в Packr. Однако, если вы хотите, чтобы том был доступен при запуске контейнера, обычно обычно нужно использовать docker run --name=Foo $ARGS
.
Вы можете установить том из файла Dockerfile, вы просто не можете указать местоположение - поэтому оно может быть или не быть полезным в зависимости от ваших потребностей. Причина в том, что сборка должна быть независимой от хоста. Как уже упоминалось, вы можете копировать файлы во время сборки, но если вы хотите читать/писать, вам может понадобиться другое решение. Вы можете использовать API, чтобы получить местоположение динамически созданного тома, но я не уверен, что это будет лучше, чем указать его на 'run'. Если у вас есть какой-то уникальный вариант использования, более подробная информация поможет. – ldg
Кажется, что [rocker] (https://github.com/grammarly/rocker) может оказаться полезным в этом случае. – Opal