Как записать данные в файловую систему хоста из контейнера Docker
У меня есть контейнер Docker, который запускает некоторый код и создает некоторые HTML-отчеты. Я хочу, чтобы эти отчеты были опубликованы в конкретном каталоге на главной машине, то есть в /usr/share/nginx/reports
То, как я это делал, - это установить этот хост-каталог как объем данных, т.е. docker run -v /usr/share/nginx/reports --name my-container com.containers/my-container
Однако, когда я ssh на хост-машине и проверяю содержимое каталога /usr/share/nginx/reports
, я не вижу там никаких данных отчета.
Я что-то делаю неправильно?
Хост-машина - это сервер Ubuntu, а контейнер Docker - также Ubuntu, здесь нет никакой загрузочной активности boot2docker.
Ответы
Ответ 1
От " Управление данными в контейнерах", установка папки хоста в контейнер будет:
docker run -v /Users/<path>:/<container path>
(см. Установить каталог хоста в качестве тома данных")
Использование только -v /usr/share/nginx/reports
объявит внутренний путь dontainer /usr/share/nginx/reports
в качестве тома, но не будет иметь ничего общего с папкой хоста.
Ответ 2
Я использую панель инструментов Docker на окнах. Я работаю над загрузочным приложением Spring, используя Docker. Мое приложение записывает журналы в
users/path/service.log
Итак, когда я запустил приложение с хост-терминала, файл журнала был успешно обновлен.
Но то же самое, когда я делал на докере, файл не был создан и не обновлялся.
Итак, я изменил местоположение моего файла журнала в соответствии с каталогами контейнеров
var/log/service.log
Я снова начал свой контейнер, и мой файл снова был обновлен.
Вы можете выбрать любое местоположение, если оно соответствует каталогу контейнера. Просто bash в контейнер и посмотрите, что вам подходит.
Следующий шаг - скопировать файлы журналов из контейнера в хост.
Итак, чтобы скопировать эти журналы на ваш хост. Вы можете использовать один из двух способов, которые я знаю:
1- использовать Объемы в докере
2- используйте следующую команду Docker для копирования файла из контейнера докеров в хост -:
docker cp <containerId>:/file/path/within/container /host/path/target