При «dockerizing» приложении ASP.NET Core 3.1 MVC я получил следующий результат:
docker run -dt -v "C:\Users\admin\vsdbg\vs2017u5:/remote_debugger:rw" -v "D:\xxx\yyy\Spikes\DockerizedWebApp1\DockerizedWebApp1:/app" -v "D:\xxx\yyy\Spikes\DockerizedWebApp1:/src/" -v "C:\Users\admin\.nuget\packages\:/root/.nuget/fallbackpackages2" -v "C:\Program Files\dotnet\sdk\NuGetFallbackFolder:/root/.nuget/fallbackpackages" -e "DOTNET_USE_POLLING_FILE_WATCHER=1" -e "ASPNETCORE_LOGGING__CONSOLE__DISABLECOLORS=true" -e "ASPNETCORE_ENVIRONMENT=Development" -e "NUGET_PACKAGES=/root/.nuget/fallbackpackages2" -e "NUGET_FALLBACK_PACKAGES=/root/.nuget/fallbackpackages;/root/.nuget/fallbackpackages2" -P --name DockerizedWebApp1 --entrypoint tail dockerizedwebapp1:dev -f /dev/null
docker: Error response from daemon: status code not OK but 500: {"Message":"Unhandled exception: Drive has not been shared"}.
See 'docker run --help'.
C:\Users\admin\.nuget\packages\microsoft.visualstudio.azure.containers.tools.targets\1.10.6\build\Container.targets(198,5): error CTC1015: Docker command failed with exit code 125.
C:\Users\admin\.nuget\packages\microsoft.visualstudio.azure.containers.tools.targets\1.10.6\build\Container.targets(198,5): error CTC1015: docker: Error response from daemon: status code not OK but 500: {"Message":"Unhandled exception: Drive has not been shared"}.
C:\Users\admin\.nuget\packages\microsoft.visualstudio.azure.containers.tools.targets\1.10.6\build\Container.targets(198,5): error CTC1015: See 'docker run --help'.
C:\Users\admin\.nuget\packages\microsoft.visualstudio.azure.containers.tools.targets\1.10.6\build\Container.targets(198,5): error CTC1015: If the error persists, try restarting Docker Desktop.
Само собой разумеется, « docker run --help » не помогал вообще (отсутствующие ссылки / якоря в документации Docker и т. Д.).
Некоторая дополнительная информация:
- Применение - это то, что строительные леса VS2019 без каких-либо модификаций .
- Образ Docker - Linux (о котором я не могу сказать ).
- Версия докера 19.03.5, сборка 633a0ea
Так как я не знаком с Linux, эта ошибка оказывается для меня «показательным стопором». Может быть, в Linux нет инструкции по подключению диска? Но какой? Сообщение не говорит это ...
Может быть, Windows должен предоставить общий доступ к диску или сопоставить папку с диском, который необходимо использовать совместно? В сообщении это тоже не сказано ...
Вот скриншот панели инструментов Docker:
А вот и Dockerfile:
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["DockerizedWebApp1/DockerizedWebApp1.csproj", "DockerizedWebApp1/"]
RUN dotnet restore "DockerizedWebApp1/DockerizedWebApp1.csproj"
COPY . .
WORKDIR "/src/DockerizedWebApp1"
RUN dotnet build "DockerizedWebApp1.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "DockerizedWebApp1.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "DockerizedWebApp1.dl"]
Любая помощь приветствуется. Заранее спасибо!
источник
500: {"Message":"Unhandled exception: Drive has not been shared"}
Сообщение , которое вызвало ошибку является полезной частью.--help
приглашение: github.com/moby/moby/blob/…Создание диска C: доступным для контейнеров Docker с панели инструментов Docker решило проблему , еще раз посмотрите на рисунок, где он не был проверен.
Тем не менее, пара комментариев должна быть предоставлена IMHO.
Может существовать очень простое объяснение, почему было показано это совершенно бесполезное сообщение - разработчики Linux много пишут (CLI!), И, будучи не очень довольны этим, они не набирают достаточно, чтобы дать содержательную диагностику своим пользователям.
Что ж, я считаю, что я не прав, но все же должно быть объяснение, почему в конечном продукте появляется такое огромное упущение .
источник
вытяните длинную команду «docker run ... / dev / null» из выходных данных и запустите ее самостоятельно в командной строке с поддержкой docker. Рабочий стол Docker должен запросить разрешение на совместное использование / доступ к сети. Возможно, вы захотите перезапустить приложение Docker Desktop, прежде чем сделать это.
источник