Как смонтировать том в Docker для Windows?

#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» <тег>