Podczas „dokowania” aplikacji ASP.NET Core 3.1 MVC otrzymałem następujący wynik:
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.
Nie trzeba dodawać, że polecenie „ docker run --help ” wcale nie pomogło (brakujące linki / kotwice w dokumentach Dockera itp.).
Niektóre dodatkowe informacje:
- Zastosowanie to rusztowania VS2019 bez żadnych modyfikacji .
- Obraz Dockera to Linux ( którego nie mogę powiedzieć ).
- Wersja Dockera to 19.03.5, kompilacja 633a0ea
Ponieważ nie jestem zaznajomiony z Linuksem, ten błąd okazuje się dla mnie jak „show-stopper”. Może Linux nie ma instrukcji montowania napędu? Ale który? Wiadomość tego nie mówi ...
Może system Windows musi udostępnić dysk lub zmapować folder na dysk, który należy udostępnić? Wiadomość też tego nie mówi ...
Oto zrzut ekranu pulpitu Docker:
A oto plik 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"]
Każda pomoc będzie mile widziana. Z góry dziękuję!
źródło
500: {"Message":"Unhandled exception: Drive has not been shared"}
Komunikat, który wywołał błąd jest przydatna część.--help
monit: github.com/moby/moby/blob/…Udostępnienie dysku C: dostępnego dla kontenerów Docker z Docker Dashboard rozwiązało problem , spójrz na zdjęcie jeszcze raz, gdzie nie było zaznaczone.
Kilka komentarzy musi jednak zostać udostępnionych IMHO.
Może istnieć bardzo proste wyjaśnienie, dlaczego wyświetlany był ten zupełnie bezużyteczny komunikat - programiści Linuksa często piszą (CLI!) I nie są z tego powodu bardzo zadowoleni, nie piszą wystarczająco dużo, aby dać sensowną diagnozę swoim użytkownikom.
Cóż, uważam, że nie mam racji, ale wciąż musi być wyjaśnienie, dlaczego tak ogromne pominięcie pojawia się w produkcie końcowym.
źródło
wyciągnij z wyjścia długą komendę „Uruchom okno dokowane ... / dev / null” i uruchom ją samodzielnie w wierszu polecenia włączonym okno dokowane. Pulpit dokera powinien następnie wyświetlić monit o zezwolenie na udostępnianie / dostęp do sieci. Być może będziesz chciał ponownie uruchomić aplikację Docker Desktop.
źródło