VOLUME
Інструкція створює обсяг даних в вашому Докер контейнері під час виконання. Каталог, поданий як аргумент, VOLUME
- це каталог, який обходить файлову систему Union і використовується в першу чергу для постійних і спільних даних.
Якщо ви запустите docker inspect <your-container>
, ви побачите, що в Mounts
розділі є a, Source
який представляє розташування каталогу на хості, і a, Destination
що представляє розташування встановленого каталогу в контейнері. Наприклад,
"Mounts": [
{
"Name": "fac362...80535",
"Source": "/var/lib/docker/volumes/fac362...80535/_data",
"Destination": "/webapp",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
]
Ось 3 випадки використання для docker run -v
:
docker run -v /data
: Це аналогічно встановленню VOLUME
інструкції у вашому Dockerfile.
docker run -v $host_path:$container_path
: Це дозволяє вам підключити $host_path
з вашого хоста до $container_path
вашого контейнера під час виконання. У розробці це корисно для обміну вихідним кодом вашого хоста з контейнером. У виробництві це можна використовувати для монтажу /etc/resolv.conf
в контейнер таких речей, як інформація про DNS хоста (знайдена в ) або секрети. І навпаки, ви також можете використовувати цю техніку для запису журналів контейнера в конкретні папки на хості. І те, $host_path
і інше $container_path
повинні бути абсолютними шляхами.
docker run -v my_volume:$container_path
: Це створює об'єм даних у вашому контейнері $container_path
та називає його my_volume
. Це по суті те саме, що створювати та називати томи за допомогоюdocker volume create my_volume
. Іменування такого тома корисно для об'єму даних контейнера та об'єму спільного зберігання, використовуючи драйвер для зберігання з кількома хостами, як Flocker .
Зауважте, що підхід монтажу хостової папки як обсягу даних недоступний у Dockerfile. Щоб процитувати документацію докера ,
Примітка. Це недоступно в Dockerfile через його переносимість та спільне використання. Оскільки каталог хостів за своєю природою залежить від хоста, каталог хостів, зазначений у Dockerfile, ймовірно, не буде працювати на всіх хостах.
Тепер, якщо ви хочете скопіювати свої файли в контейнери в середовищах, що не розробляються, ви можете скористатися інструкціями ADD
або COPY
вказівками у своєму Dockerfile. Це те, що я зазвичай використовую для розгортання без розробки.
COPY
щобADD
. Вони майже однакові, алеADD
мають деякі додаткові URL-адреси wrt та архівні файли, що може дивувати.