При настройке в Dockerfile том приведет к тому, что любой контейнер, запущенный из этого образа, включая временные контейнеры позже в процессе сборки из команды RUN
, будет иметь том, определенный в указанном месте, например, / stuff.Если вы не определите источник для этого тома во время выполнения, вы получите анонимный том, созданный Docker для вас в этом месте.Тем не менее, вы всегда можете определить том с источником во время выполнения (даже без определения тома), указав расположение в вашем файле компоновки:
version: "3"
services:
app:
image: your_image
volumes:
- data:/stuff
volumes:
data:
Обратите внимание, что есть два раздела томов, один дляконкретный сервис, который указывает, где том смонтирован внутри контейнера, и другой на верхнем уровне, где вы можете указать источник тома.Без указания источника вы получите локальный драйвер тома с каталогом в / var / lib / docker bind, смонтированный в контейнере.
Я не рекомендую указывать тома в Dockerfile в целом, он нарушаетвозможность расширять изображение на последующих этапах для дочерних изображений и загромождать файловую систему анонимными томами, которые нелегко отследить до их происхождения.Лучше всего определять их во время выполнения с помощью чего-то вроде составного файла.