Подтвердить что ты не робот

Как записать данные в файловую систему хоста из контейнера 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.

4b9b3361

Ответ 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