ডকার: ড্রাইভ ভাগ করা হয়নি


15

যখন একটি এএসপি.নেট কোর 3.1 এমভিসি অ্যাপ্লিকেশনটিকে "ডকারোইজিং" করার সময় আমি নিম্নলিখিত ফলাফল পেয়েছি:

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.

বলা বাহুল্য যে ' ডকার রান - হেল্প ' মোটেও সহায়তা করে নি ( ডকার ডক্সে লিংক / অ্যাঙ্কারগুলি হারিয়ে গেছে)।

কিছু অতিরিক্ত তথ্য:

  • অ্যাপ্লিকেশনটি হ'ল ভিএস 20159 কোনও পরিবর্তন ছাড়াই স্ক্যাফোড করে ।
  • ডকার চিত্রটি লিনাক্স ( যা আমি বলতে পারি না )।
  • ডকার সংস্করণটি 19.03.5, 633a0ea তৈরি করুন

যেহেতু আমি লিনাক্সের সাথে পরিচিত নই এই ত্রুটিটি আমার কাছে "শো-স্টপার" এর মতো হয়ে যায়। হয়তো লিনাক্সকে ড্রাইভ মাউন্ট করার নির্দেশ দেওয়া হয়নি? তবে কোনটি? বার্তাটি এটি বলে না ...

হতে পারে উইন্ডোজকে কোনও ড্রাইভ ভাগ করতে হবে, বা ভাগ করতে হবে এমন কোনও ড্রাইভে কোনও ফোল্ডার ম্যাপ করতে হবে? বার্তাটি এটিও বলে না ...

এখানে ডকার ড্যাশবোর্ডের একটি স্ক্রিনশট রয়েছে:

এখানে চিত্র বর্ণনা লিখুন

এবং এখানে ডকফায়াইল:

#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"]

কোন সাহায্যের অনেক প্রশংসা হবে। আগাম ধন্যবাদ!

উত্তর:


15

ডকার রান কমান্ডে সি ড্রাইভের ভলিউম অন্তর্ভুক্ত রয়েছে, যেমন -v "C:\Users\admin\vsdbg\vs2017u5:/remote_debugger:rw"। এগুলি কাজ করার জন্য আপনাকে নিজের ভাগ করা ড্রাইভগুলিতে সি ড্রাইভ অন্তর্ভুক্ত করতে হবে (সেটিংস -> সংস্থানসমূহ -> ফাইল ভাগ করে নেওয়ার নীচে বাক্সটি চেক করুন)। আপনি এমডি এম্বেড ভিএম-তে ইতিমধ্যে ভাগ করা ডি ড্রাইভে ভাগ করে নেওয়ার জন্য ফাইলগুলিও সরাতে পারেন, যদিও এটি সম্ভবত এই ক্ষেত্রে বিকল্প নয়। কোন ড্রাইভগুলি ভাগ করতে হবে তা জানতে, কমান্ডের ভলিউম মাউন্টগুলিতে ব্যবহৃত ড্রাইভগুলি পরীক্ষা করে দেখুন।

উইন্ডোজের জন্য ডকারের পূর্ববর্তী সংস্করণগুলিতে, এটি নিঃশব্দে সফল হবে এবং একটি খালি ফোল্ডারটি ধারকটিতে মাউন্ট করবে। সুতরাং ব্যবহারকারীদের ভাগ করে নেওয়া ড্রাইভগুলি প্রথমে পরীক্ষা করতে বলার ত্রুটিটি একটি দুর্দান্ত উন্নতি।


সি: এটি আমার বুট ড্রাইভ এবং এতে ওএস ইনস্টল করা আছে। আপনি কি সত্যিই এমন সংবেদনশীল তথ্য ভাগ করে নেওয়া ভাল অনুশীলন বলে মনে করেন?
আলেকজান্ডার ক্রিস্টভ

@ আলেকজান্ডারক্রিস্টভ ড্রাইভটি এমবেডড ভিএম এর সাথে ভাগ করা যায় যা আপনাকে সেগুলি থেকে ধারকগুলিতে ডিরেক্টরিগুলি মাউন্ট করতে দেয়। আপনি বলতে পারবেন না যে আপনি সেই ড্রাইভের ডিরেক্টরিতে অ্যাক্সেসের প্রয়োজন হয় এমন কমান্ডগুলি চালাতে চাইলে আপনি ড্রাইভটি ভাগ করতে চান না। এটি কোনও ডকার ইস্যু নয়, আপনি ডক্কারকে চালনার জন্য যে আদেশটি আদেশ করেছেন এটি এটি একটি সমস্যা।
বিএমইচ

তবুও "দেখুন 'ডকার রান - হেল্প'।" বেশ অকেজো। প্রকৃতপক্ষে এটি কিছুটা ক্ষতিকারক যেহেতু খাঁটি সময় নষ্ট করে যা আপনি দেখতে পাচ্ছেন যে প্রশ্ন জিজ্ঞাসা করে। যাইহোক ধন্যবাদ.
আলেকজান্ডার ক্রিস্টভ

@ আলেকজান্ডারক্রিস্টভ যা কোনও কমান্ড ব্যর্থ হয় তার জেনেরিক বার্তা, আপনাকে জানাতে যে কোন সাবকম্যান্ড সহায়তা পাঠ্য প্রাসঙ্গিক হতে পারে। প্রতিটি সম্ভাব্য ত্রুটির শর্তটি coverাকতে কীভাবে এটি সামঞ্জস্য করবেন তা নিশ্চিত নন। 500: {"Message":"Unhandled exception: Drive has not been shared"}বার্তা যে ত্রুটি আলোড়ন সৃষ্টি দরকারী অংশ।
বিএমইচ

তারা কখন / কখন তৈরি করে তা এটি দেখুন --help প্রম্পটটি : github.com/moby/moby/blob/…
বিএমইচ

8

ড্রাইভ সি তৈরি করা: ডকার ড্যাশবোর্ড থেকে ডকারের পাত্রে পাওয়া সমস্যার সমাধান করে , ছবিটি আবার দেখুন যেখানে এটি চেক করা হয়নি।

বেশ কয়েকটি মন্তব্য অবশ্যই আইএমএইচএও ভাগ করে নিতে হবে।

  • কোন ড্রাইভ ভাগ করে নেওয়া দরকার ত্রুটি বার্তাটি পরিষ্কার ছিল না (লিনাক্স একক ড্রাইভের চেয়ে বেশি সমর্থন করে , আমার ধারণা)
  • যদি ড্রাইভ সি না করেই: উপলব্ধ (বা বুটেবল ড্রাইভ, ওএস যেখানে থাকে) ডকার কার্যকরী হবে না , কেন এটি ইনস্টলেশন করার পরে এটি ড্রাইভটি নিজেই পরীক্ষা করে নি? এটি ডকার ড্যাশবোর্ডে কেবল একটি ক্লিক ( !! ), সুতরাং এটি (তুলনামূলকভাবে) সহজ হওয়া উচিত।

কেন এই যথেষ্ট অকেজো বার্তা প্রদর্শিত হয়েছিল তার একটি খুব সহজ ব্যাখ্যা থাকতে পারে - লিনাক্স বিকাশকারীরা প্রচুর (সিএলআই!) টাইপ করেন এবং এতে খুশি না হওয়ায় তারা তাদের ব্যবহারকারীদের অর্থবহ ডায়াগনস্টিক দেওয়ার জন্য টাইপ করেন না।

ঠিক আছে, আমি বিশ্বাস করি যে আমি ঠিক নেই, তবে এখনও একটি ব্যাখ্যা থাকতে হবে কেন চূড়ান্ত পণ্যটিতে এত বিশাল বাদ পড়েছে appears


এছাড়াও, ড্রাইভটি পরীক্ষা না করেই ডকার পুরোপুরি কার্যক্ষম, যতক্ষণ না আপনি নিজের স্থানীয় ফাইল সিস্টেম থেকে কোনও ডিরেক্টরি বাঁধাই-করার চেষ্টা করছেন না। একমাত্র বিষয় হ'ল তারা আপনাকে যে নীতিগুলি সেট করে সেগুলি অনুসরণ করতে চায় এবং সেগুলি আপনার জন্য সেট করে না। (কল্পনা করুন যে অন্ধভাবে একটি স্ক্রিপ্ট চালানো হয়েছে যা সি: \ পাত্রে উইন্ডো ছড়িয়ে পড়েছে, এবং যখন আপনি নিজের এসএএম অ্যাকাউন্টটি হ্যাশ ফাটল দেখেন তখন অবাক হন ... যা কেবল তখনই অনুমোদিত ছিল কারণ তারা "সহায়কভাবে" ড্রাইভ সি ভাগ করে নেওয়ার জন্য সেই বাক্সটি চেক করেছিলেন এবং করেনি ' টি আপনাকে এ সম্পর্কে বলবে না))
sjcaged

1

দীর্ঘ "ডকার রান ... / dev / নাল" কমান্ডটি আউটপুট থেকে বের করে এনে নিজেই ডকার সক্ষম কমান্ড প্রম্পটে এটিকে চালিত করুন। ডকার ডেস্কটপটি তখন শেয়ারিং / নেটওয়ার্ক অ্যাক্সেসের অনুমতি দেওয়ার জন্য অনুরোধ জানানো উচিত। আপনি ডকার ডেস্কটপ অ্যাপ্লিকেশনটি করার আগে পুনরায় চালু করতে চাইতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.