Ketika "buruh pelabuhan" aplikasi ASP.NET Core 3.1 MVC saya mendapat hasil sebagai berikut:
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.
Tidak perlu dikatakan ' docker run --help ' tidak membantu sama sekali (tautan / jangkar yang hilang di dokumen Docker dll.).
Beberapa info tambahan:
- Aplikasi adalah apa perancah VS2019 tanpa modifikasi .
- Gambar Docker adalah Linux ( yang mana saya tidak tahu ).
- Versi Docker adalah 19.03.5, build 633a0ea
Karena saya tidak terbiasa dengan Linux, kesalahan ini ternyata seperti "show-stopper" bagi saya. Mungkin Linux tidak diperintahkan untuk memasang drive? Tapi yang mana? Pesan tidak mengatakannya ...
Mungkin Windows harus membagikan drive, atau memetakan folder ke drive yang perlu dibagi? Pesan itu tidak mengatakan ini juga ...
Berikut screenshot dari dasbor Docker:
Dan inilah 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"]
Bantuan apa pun akan sangat dihargai. Terima kasih sebelumnya!
sumber
500: {"Message":"Unhandled exception: Drive has not been shared"}
pesan yang memicu kesalahan adalah bagian berguna.--help
prompt itu: github.com/moby/moby/blob/…Membuat drive C: tersedia untuk wadah Docker dari Docker Dashboard menyelesaikan masalah , lihat gambar sekali lagi di tempat itu tidak diperiksa.
Namun, beberapa komentar harus dibagikan IMHO.
Penjelasan yang sangat sederhana mengapa pesan yang tidak berguna ini ditampilkan mungkin ada - pengembang Linux banyak mengetik (CLI!) Dan karena tidak terlalu senang dengan ini, mereka tidak cukup mengetik untuk memberikan diagnosa yang berarti bagi pengguna mereka.
Yah, saya yakin saya tidak benar, tetapi masih harus ada penjelasan mengapa kelalaian besar seperti itu muncul dalam produk akhir.
sumber
tarik keluar "docker run ... / dev / null" yang panjang dari output dan jalankan dengan sendirinya di docker command prompt yang diaktifkan. Desktop Docker kemudian harus meminta untuk mengizinkan berbagi / akses jaringan. Anda mungkin ingin memulai kembali aplikasi Docker Desktop sebelum melakukannya.
sumber