Как подключить каталог хоста к контейнеру Docker – CloudSavvy IT
Docker предоставляет инструменты для объединения файловых систем контейнеров и операционной системы хоста, на которой запущен контейнер, например, привязки монтирования и томов. Они могут быть очень полезны как в среде разработки, так и в производственной среде.
Зачем монтировать с хоста?
Как правило, с Docker вы хотите, чтобы образы запускались независимо от хост-системы. Если вы хотите, например, обновить код приложения или файлы конфигурации, вы, вероятно, захотите создать новую версию контейнера и повторно развернуть. Это позволяет быстро масштабировать и перемещать изображения, не беспокоясь об оборудовании, на котором они работают.
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)
Однако в среде разработки возможность напрямую смонтировать каталог, чтобы включить горячую перезагрузку конфигурации или кода, может быть очень полезной. Например, вы можете работать над JS-файлом или надстройкой PHP, которые можно просто перетащить в контейнер. Или вы можете смонтировать весь каталог конфигурации NGINX для работы на своем веб-сайте. Каким бы ни был ваш случай использования, монтирование файлов – неплохое решение.
Это также полезно в производстве, если у вас есть службы хоста, которые зависят от файлов в контейнерах. Например, у вас может быть служба приема и агрегирования журналов, которая предпочла бы, чтобы файлы журналов контейнера находились в каталоге, доступном с хоста. Хотя, вероятно, есть несколько чистых решений в Docker для ваших проблем, иногда проще просто смонтировать том.
Совместимость с macOS
Примечание: поскольку монтирование выполняется через Docker API, они будут работать независимо от ОС хоста. Однако macOS имеет дополнительную защиту и монтируется за пределами нескольких каталогов хоста. может дать сбой с «монтированием отказано» во время выполнения. Сюда входит / Users, который охватывает большинство операций, но при необходимости вы можете исправьте это в настройках Docker в разделе «Настройки»> «Ресурсы»> «Общий доступ к файлам». добавив целевой каталог в список.
Монтирование каталога хоста
Создать привязку довольно просто. Добавьте его с флагом –mount type = bind при запуске, указав исходный и целевой каталог для монтирования.
docker run -d -it –name container –mount type = bind, source = / nginxconfig, target = / etc / nginx nginx: latest
Bind mounts – самые простые, но Docker предоставляет Volume API для более удобного управления этими видами монтирования. Сохраненные данные будут управляться Docker, а каталог тома будет автоматически создан в каталоге Docker. Это может быть не то, что вам нужно, если вы имеете в виду существующий каталог, но этот метод лучше, поскольку он не зависит от файловой структуры хост-ОС.
том docker создать nginx-config docker run -d –name devtest –mount source = nginx-config, target = / etc / nginx nginx: latest
Вы также можете использовать Docker Compose для определения томов:
версия: “3.0” службы: web: изображение: nginx: последние порты: – тома “80:80”: – nginx-config: / etc / nginx / volume: nginx-config:
Они хранятся в стандартном формате, доступном для Linux:
/ вар / библиотека / докер / тома / volumeID / _data
Однако в macOS вам потребуется подключиться к виртуальной машине Docker, чтобы иметь возможность просматривать тома.
Монтирование отдельных файлов
Монтирование целых каталогов хорошо работает, когда вы хотите отредактировать множество файлов конфигурации / кода, которые хранятся на хосте. Однако иногда вы можете просто смонтировать один файл для редактирования, не касаясь других файлов.
Для этого вы можете запустить контейнер с привязкой монтирования, которая поддерживает отдельные файлы, если вы укажете путь:
docker run -it –mount type = bind, source = / path / file.cfg, target = / etc / example / file.cfg nginx sh
Если у вас есть много файлов для монтирования таким образом, вы можете поместить их все в один каталог хоста и смонтировать этот каталог в другое место в контейнере. Затем вы можете использовать символические ссылки внутри контейнера, чтобы связать файлы в смонтированном каталоге в нужное место.
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)