#python #windows #docker
#python #Windows #докер #docker
Вопрос:
Я пытаюсь сохранить данные из моего приложения docker в папку хоста. Мой файл dockerfile:
FROM python:3
# set a directory for the app
WORKDIR /usr/src/app
# copy all the files to the container
COPY . .
# install dependencies
RUN pip install --no-cache-dir -r requirements.txt
EXPOSE 8050
CMD ["python", "./app.py"]
Затем я создаю образ:
docker build <path> -t <tag>
А затем запустите:
docker run -p 8050:8050 <tag>
Чтобы сохранить выходные данные из приложения docker, которое я пытался сделать следующим образом
pd.DataFrame(rows).to_excel('S:/Folder1/Folder2/Folder3/file.xlsx', index=False)
Мне нужно смонтировать том, в настройках Docker> Ресурсы> Общий доступ к файлам я добавил каталог ‘S:/Folder1/Folder2/Folder3 /’ чтобы его можно было монтировать в контейнеры Docker.
А затем я попытался запустить образ:
docker run -p 8050:8050 -v "s:/folder1/folder2/folder3/":"/data" <tag>
при этом появляется всплывающее окно «Docker хочет получить доступ к C dc Shared folder1 folder2 folder3», и я могу выбрать общий доступ или отменить, после выбора общего доступа папка 3 создается в нужном месте, но я получаю сообщение об ошибке:
docker: Error response from daemon: error while creating mount source path '/host_mnt/uC/dc/Shared/folder1/folder2/folder3/': mkdir /host_mnt/uC: operation not permitted.
Если я попробую найти местоположение на моем диске C:, это работает без проблем, проблемы возникают только с общим диском.
Как правильно смонтировать том, чтобы я мог затем сохранить его в эту папку? Спасибо
Комментарии:
1. Вызываете ли вы pd.DataFrame(rows).to_excel изнутри docker? Если это так, вы делаете неправильно. Вы должны вызвать /data/file.xls вместо этого.
2. Я только что протестировал со своей Windows. Общий каталог в настройках docker:
C:Developmenttemp
Встроил туда образ с вашими командами. Запустил его оболочку с помощьюdocker run -it -p 8050:8050 -v "C:Developmenttemp":"/data" test bash
Затем я смог записать новый файлecho "Testing" > /data/testing
в смонтированный каталог. То же самое делает ваш код на Python.3. @GintsGints да, я вызываю это изнутри docker — я не уверен, что вы подразумеваете под вызовом /data/file.xls вместо этого, хотя
4. Вы не можете использовать Windows path внутри контейнера docker. Вместо этого используйте linux path.
Ответ №1:
Вместо этого ваше контейнерное приложение должно вызывать /data folder.
Комментарии:
1. Спасибо! Но я думаю, что ошибка возникает перед сохранением, docker: ответ об ошибке от daemon: ошибка при создании пути к источнику монтирования ‘/host_mnt/ uC / dc / Shared /folder1 / folder2 / folder3 /’: mkdir /host_mnt / uC: операция не разрешена.
2. Попробуйте повторить мой тест.
3. что это значит?
4. Можете ли вы выполнить свой контейнерный bash и создать файл, находясь внутри контейнера?
5. Вы имеете в виду выполнить это? запуск docker -p 8050:8050 -v «s:/folder1/folder2/folder3 /»:»/data» <тег>