Beim "Andocken" einer ASP.NET Core 3.1 MVC- Anwendung wurde das folgende Ergebnis erzielt :
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.
Unnötig zu erwähnen , dass ' docker run --help ' überhaupt nicht geholfen hat (fehlende Links / Anker in den Docker-Dokumenten usw.).
Einige zusätzliche Informationen:
- Anwendung ist das VS2019-Gerüst ohne Modifikationen .
- Docker-Image ist Linux ( welches ich nicht sagen kann ).
- Docker-Version ist 19.03.5, Build 633a0ea
Da ich mit Linux nicht vertraut bin, stellt sich dieser Fehler für mich als "Show-Stopper" heraus. Vielleicht wird Linux nicht angewiesen, ein Laufwerk zu mounten? Aber welcher? Die Nachricht sagt es nicht ...
Möglicherweise muss Windows ein Laufwerk freigeben oder einen Ordner einem Laufwerk zuordnen, das freigegeben werden muss? Die Nachricht sagt dies auch nicht ...
Hier ist ein Screenshot des Docker-Dashboards:
Und hier ist die Docker-Datei:
#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"]
Jede Hilfe wäre sehr dankbar. Danke im Voraus!
quelle
500: {"Message":"Unhandled exception: Drive has not been shared"}
Meldung, die den Fehler ausgelöst hat, ist der nützliche Teil.--help
Eingabeaufforderung generieren : github.com/moby/moby/blob/…Durch die Bereitstellung von Laufwerk C: für Docker-Container über das Docker-Dashboard wurde das Problem behoben . Sehen Sie sich das Bild noch einmal an, in dem es nicht überprüft wurde.
Ein paar Kommentare müssen jedoch meiner Meinung nach geteilt werden.
Es kann eine sehr einfache Erklärung dafür geben, warum diese ziemlich nutzlose Meldung angezeigt wurde: Linux-Entwickler geben viel (CLI!) Ein und sind nicht sehr zufrieden damit. Sie geben nicht genug ein, um ihren Benutzern eine aussagekräftige Diagnose zu geben.
Nun, ich glaube, ich habe nicht Recht, aber es muss dennoch eine Erklärung geben, warum eine so große Auslassung in einem Endprodukt auftritt.
quelle
Ziehen Sie den langen Befehl "docker run ... / dev / null" aus der Ausgabe und führen Sie ihn selbst an einer Docker-fähigen Eingabeaufforderung aus. Der Docker-Desktop sollte dann auffordern, die Freigabe / den Netzwerkzugriff zuzulassen. Möglicherweise möchten Sie die Docker Desktop-App vorher neu starten.
quelle