Назад в блог

Как обмениваться данными между контейнером Docker и хостом

Как обмениваться данными между контейнером Docker и хостом

Введение

Как правило, контейнеры Docker работают только в течение определенного периода времени – времени, необходимого для выполнения команды. Доступ к данным внутри контейнера возможен только из самого контейнера во время его работы.

Тома Docker можно использовать для простого доступа к файлам и их хранения в течение более длительного периода. Например, если у вас есть веб-сервер Nginx и вы хотите сохранять логи для аудита, вы можете использовать том Docker для хранения логов из контейнера на вашей хост-машине.

В этом руководстве вы узнаете, как обмениваться данными между контейнером Docker и хост-машиной. 

Предварительные требования

Для этого руководства вам понадобятся следующие предварительные требования:

Шаг 1 – Монтирование тома (Bind Mount)

Вы можете создать каталог с именем logs в домашнем каталоге текущего пользователя и примонтировать его к /var/log/nginx в контейнере Nginx с помощью следующей команды:

Ниже приведена более подробная информация об этой команде:

  • --name=nginx задает имя контейнера для удобства обращения.
  • -d аргумент отсоединяет процесс и запускает его в фоновом режиме.
  • -v hostPath:containerPath сопоставляет путь хоста и путь контейнера для монтирования.
  • -p hostPort:containerPort аргумент сопоставляет порт контейнера с портом хоста.
  • nginx в конце строки — это имя образа, который должен использоваться для запуска контейнера.
Примечание: Всегда используйте / или ~/ для начала hostPath, иначе аргумент -v посчитает путь именем тома и не выполнит монтирование.

Шаг 2 – Доступ к данным на хосте

Теперь на вашем сервере запущен контейнер Nginx, и порт 5000 вашего сервера сопоставлен с портом 80 Nginx. Вы можете открыть этот порт в веб-браузере по следующему URL-адресу:

nginx homepage

В каталоге ~/logs вы увидите файлы access.log и error.log. Вы можете просмотреть логи с помощью команды cat:

Вы также можете проверить каталог логов ~/logs на вашей хост-машине и найти файл логов Nginx. Более того, если вы внесете какие-либо изменения в папку logs, они также отразятся в папке /var/log/nginx контейнера.

Заключение

В этом руководстве вы узнали, как обмениваться данными между контейнером Docker и хост-машиной. Это важно в средах разработки, где анализ логов необходим для отладки.

Дополнительные ресурсы по Docker в нашем блоге, вы можете найти здесь:

Приятной работы!

author

Akshay Nagpal

Автор · CloudSigma

Preslav Dobrev — креативный дизайнер в CloudSigma, сосредоточенный на формировании последовательного корпоративного образа с помощью традиционных и инновационных маркетинговых каналов. Он умело сочетает художественное видение со стратегическим маркетингом, создавая убедительные истории бренда.

Комментарии

Комментариев пока нет. Будьте первым.