Al "dockerizar" una aplicación ASP.NET Core 3.1 MVC obtuve el siguiente resultado:
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.
No hace falta decir que ' docker run --help ' no ayudó en absoluto (faltan enlaces / anclajes en los documentos de Docker, etc.).
Alguna información adicional:
- La aplicación es lo que andamios VS2019 sin ninguna modificación .
- La imagen de Docker es Linux ( cuál no puedo decir ).
- La versión de Docker es 19.03.5, compilación 633a0ea
Dado que no estoy familiarizado con Linux, este error resulta ser como un "show-stopper" para mí. ¿Quizás Linux no tiene instrucciones de montar una unidad? ¿Pero cual? El mensaje no lo dice ...
¿Quizás Windows tiene que compartir una unidad o asignar una carpeta a una unidad que necesita ser compartida? El mensaje tampoco dice esto ...
Aquí hay una captura de pantalla del panel de Docker:
Y aquí está el 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"]
Cualquier ayuda sería muy apreciada. ¡Gracias por adelantado!
fuente
500: {"Message":"Unhandled exception: Drive has not been shared"}
mensaje que activó el error es la parte útil.--help
aviso: github.com/moby/moby/blob/…Hacer que la unidad C: disponible para los contenedores Docker desde el Docker Dashboard solucionó el problema , mira la imagen una vez más donde no se verificó.
Sin embargo, se deben compartir un par de comentarios en mi humilde opinión.
Puede existir una explicación muy simple de por qué se mostró este mensaje bastante inútil: los desarrolladores de Linux escriben mucho (¡CLI!) Y, como no están muy contentos con esto, no escriben lo suficiente como para dar un diagnóstico significativo a sus usuarios.
Bueno, creo que no estoy en lo cierto, pero aún debe haber una explicación de por qué aparece una omisión tan grande en un producto final.
fuente
extraiga el comando largo "docker run ... / dev / null" de la salida y ejecútelo solo en un símbolo del sistema habilitado para docker. El escritorio de Docker debería solicitar permiso para compartir / acceso a la red. Es posible que desee reiniciar la aplicación Docker Desktop antes de hacerlo.
fuente