Введение
Как правило, контейнеры Docker работают только в течение определенного периода времени – времени, необходимого для выполнения команды. Доступ к данным внутри контейнера возможен только из самого контейнера во время его работы.
Тома Docker можно использовать для простого доступа к файлам и их хранения в течение более длительного периода. Например, если у вас есть веб-сервер Nginx и вы хотите сохранять логи для аудита, вы можете использовать том Docker для хранения логов из контейнера на вашей хост-машине.
В этом руководстве вы узнаете, как обмениваться данными между контейнером Docker и хост-машиной.
Предварительные требования
Для этого руководства вам понадобятся следующие предварительные требования:
- Сервер Ubuntu 18.04: вы можете легко создать новый сервер CloudSigma с образом Ubuntu 18.04, следуя нашему полезному руководству.
- Docker – вы можете установить Docker, используя наше руководство по настройке Docker на Ubuntu и ознакомиться с ним.
Шаг 1 – Монтирование тома (Bind Mount)
Вы можете создать каталог с именем logs в домашнем каталоге текущего пользователя и примонтировать его к /var/log/nginx в контейнере Nginx с помощью следующей команды:
|
1 |
docker run --name=nginx -d -v ~/logs:/var/log/nginx -p 5000:80 nginx |
Ниже приведена более подробная информация об этой команде:
--name=nginxзадает имя контейнера для удобства обращения.-dаргумент отсоединяет процесс и запускает его в фоновом режиме.-v hostPath:containerPathсопоставляет путь хоста и путь контейнера для монтирования.-p hostPort:containerPortаргумент сопоставляет порт контейнера с портом хоста.nginxв конце строки — это имя образа, который должен использоваться для запуска контейнера.
Шаг 2 – Доступ к данным на хосте
Теперь на вашем сервере запущен контейнер Nginx, и порт 5000 вашего сервера сопоставлен с портом 80 Nginx. Вы можете открыть этот порт в веб-браузере по следующему URL-адресу:
|
1 |
http://serverIP:5000/ |

В каталоге ~/logs вы увидите файлы access.log и error.log. Вы можете просмотреть логи с помощью команды cat:
|
1 |
cat access.log |
|
1 2 3 |
Вывод: xx.xxx.xxx.xxx - - [17/Apr/2021:19:25:05 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xx.xxx.xxx.xxx Safari/537.36" "-" xx.xxx.xxx.xxx - - [17/Apr/2021:19:25:05 +0000] "GET /favicon.ico HTTP/1.1" 404 556 "http://xx.xxx.xxx.xxx:5000/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xx.xxx.xxx.xxx Safari/537.36" "-" |
Вы также можете проверить каталог логов ~/logs на вашей хост-машине и найти файл логов Nginx. Более того, если вы внесете какие-либо изменения в папку logs, они также отразятся в папке /var/log/nginx контейнера.
Заключение
В этом руководстве вы узнали, как обмениваться данными между контейнером Docker и хост-машиной. Это важно в средах разработки, где анализ логов необходим для отладки.
Дополнительные ресурсы по Docker в нашем блоге, вы можете найти здесь:
- Как установить & использовать Docker на Ubuntu в публичном облаке
- Установка и настройка Docker на CentOS 7
- Очистка ресурсов Docker – образов, контейнеров и томов
- Как запустить Docker на CloudSigma (с CloudInit) Обновлено
Приятной работы!
Комментарии
Комментариев пока нет. Будьте первым.