লকার্স শৈলীর পথ থেকে অনুবাদ করার সময় উইন্ডো পাথের সমাপ্তির জন্য ডকার মাউন্ট করা ভলিউম যোগ করে;


88

উইন্ডোজে ডকারের চিত্রটি মাউন্ট করার চেষ্টা করার সময় আমি কিছু আকর্ষণীয় অদ্ভুততা পেয়েছি।

আমি একটি .shস্ক্রিপ্ট তৈরি করেছি যা আমাদের বিকাশকারী পরিবেশের চিত্র চালানোর জন্য প্রকল্প ফোল্ডারের মাউন্ট করে। আমি একটি স্ক্রিপ্ট চাই যা প্রতিটি দেবই তাদের মেশিন নির্বিশেষে চালাতে পারে। এটি যা করে তা হ'ল বর্তমান প্রকল্প ফোল্ডারের সাথে ডকার চালানো।

#!/usr/bin/env bash
docker run -it --rm -v D:\my\project\folder:/wkDir $IMAGE_TAG yarn dev

ঠিক আছে। এখন থেকে এই স্ক্রিপ্টটি কল করার পরিকল্পনা রয়েছে npm, সুতরাং আমি বর্তমান ফোল্ডারের তুলনায় এটি কাজ করতে চাই। আসুন অন্য সংস্করণ চেষ্টা করুন।

docker run -it --rm -v $PWD:/wkDir $IMAGE_TAG yarn dev

এতে ব্যর্থ:

C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from 
daemon: Mount denied:
The source path "D:/my/project/folder;C"
doesn't exist and is not known to Docker.

ওয়াট কি ;Cএবং এটি কোথা থেকে এসেছে?

সুতরাং আমি echo $PWDযা আমাকে দেয় না /d/my/project/folder

আকর্ষণীয়, তাই $PWDলিনাক্স পথের ফর্ম্যাটে সঠিক পথের সমাধান হয়েছে, এবং মনে হচ্ছে ডকার এই থেকে সঠিক উইন্ডোজ পথে অনুবাদ করার চেষ্টা করছেন, এটি বাদে ;Cকোথাও উপস্থিত নেই appears এবং \/...

এখানে ঠিক কি ঘটছে না?

আমি ভিএসকোডের টার্মিনাল গিট ব্যাশ এবং পাওয়ারশেলের একই ফলাফল পেয়েছি।

আপডেট: আমি লক্ষ্য করেছি যে .shভিএসকোডের পাওয়ারশেল টার্মিনালটিতে চলমান , একটি পৃথক cmd.exeকনসোল উইন্ডো খোলে যা মনে হয় গিট ব্যাশে স্ক্রিপ্টটি চালায়। সুতরাং এটি একটি গিট ব্যাশ সমস্যা হতে পারে।

উত্তর:


126

সুতরাং কিছু অতিরিক্ত খননের সাথে আমি এই তিনটি থ্রেড পেয়েছি, গিট-ব্যাশ মাক আপ ডকার মাউন্ট সম্পর্কিত:

https://forums.docker.com/t/weird-error-und-git-bash-msys-solve/9210 https://github.com/moby/moby/issues/24029#issuecomment-250412919

গিট-ব্যাশ যে পাথ রূপান্তর করছে তা নিয়ে যখন আমি মিংডাব্লিউর ডকুমেন্টেশনগুলি দেখি তখন আমি সিনট্যাক্সের এই টেবিলটি দেখতে পাই: http://www.mingw.org/wiki/Posix_path_conversion

যা এক বিন্যাসে আউটপুট: x;x;C:\MinGW\msys\1.0\x;Cএটিতে নোট করুন গিট-ব্যাশ যদি চালাক হওয়ার চেষ্টা করে, সিনট্যাক্সটি পূরণ করে এবং এই ফর্ম্যাটটি দিয়ে কোনও পথ আউটপুট করে, এটি এটি ব্যাখ্যা করবে।

সমাধানটি প্রিফিক্স ব্যবহার করে পাথ রূপান্তর থেকে বাঁচা /। সুতরাং ওয়ার্কিং ডকার কমান্ডটি বর্তমান ওয়ার্কিং ডিরেক্টরি সহ গিট-ব্যাশ থেকে ডকার চালনার জন্য:

docker run -it --rm -v /${PWD}:/wkDir $IMAGE_TAG yarn dev

9
আমি দেখতে পেলাম যে অতিরিক্তভাবে আমাকে একটি স্ট্রিংয়ে "/${PWD}"
মোড়ক দিতে হয়েছিল

11
$ docker run -p 8080:3000 -v /$(pwd):/var/www -w //var/www node npm start আমি শেষ পর্যন্ত আবিষ্কার করেছি যে আমাকে বন্ধনীগুলির পরিবর্তে প্রথম বন্ধনী ব্যবহার করতে হয়েছিল with এছাড়াও, ওয়ার্কিং ডিরেক্টরি সহ আমার দুটি শীর্ষস্থানীয় স্ল্যাশ প্রয়োজন। এফওয়াইআই: ওয়েব-বিকাশকারীদের জন্য
ডুলারের

এটি আমার জন্য কাজ করেছে (উইন্ডোজ 10 গিট ব্যাশে): ডকার রান - নাম আমার-ওয়ার্ডপ্রেস -v "/ $ {পিডাব্লুডি} / ওয়ার্ডপ্রেস": / ওয়ার্ডপ্রেস_সোর্স -p 80:80 -dk <চিত্র_নাম>
প্রগনকপা

4
জীবন রক্ষাকারী. উইন্ডোজ 10 এবং গিট-ব্যাশ, ডকার-রচনাটি ব্যবহার না করে ভলিউম মাউন্ট করার চেষ্টা করতে আমাকে এই পোস্টটি না দেখিয়ে অনেক সময় নিয়েছে। এখন এই কাজ করে: docker run --rm -v /${PWD}/migrations:/flyway/sql --network xxx_default flyway। ধন্যবাদ.
এমিলি

জীবন। সংরক্ষণ করুন +1000000
জনাথন Tuzman

3

আমার জন্য সমাধানটি ছিল কেবল /কোনও পাথের শেষে ক্লোজিং স্ল্যাশ অন্তর্ভুক্ত করা

যেমন পরিবর্তে

/opt/apache-atlas-2.0.0/bin/atlas_start.py

... ব্যবহার

/opt/apache-atlas-2.0.0/bin/atlas_start.py/


3

গিটি ব্যাশ (মিনজিডাব্লু) থেকে উইন্ডোজ 10-এ ডোকার ধারকটিতে বর্তমান ডিরেক্টরিটি মাউন্ট করা পসিক্স পাথ রূপান্তরের কারণে ব্যর্থ হতে পারে। যে কোনও পথ দিয়ে শুরু করে /তা বৈধ উইন্ডোজ পথে রূপান্তরিত হয়।

touch test.txt
docker run --rm -v $(pwd):/data busybox ls -la /data/test.txt
# ls: C:/Git/data/test.txt: No such file or directory

প্রিফিক্স করে পসিক্স পাথগুলি এড়িয়ে চলুন /

পাথ রূপান্তর এড়াতে, সমস্ত পসিক্স পাথকে অতিরিক্ত লিডিং স্ল্যাশ ( /) সহ প্রিফিক্স করতে হবে /$(pwd)

touch test.txt
docker run --rm -v /$(pwd):/data busybox ls -la //data/test.txt
# -rwxr-xr-x    1 root     root             0 Jun 22 23:45 //data/test.txt

গিট বাশে পথটি //data/test.txtরূপান্তরিত হয় না এবং লিনাক্স শেলগুলিতে //(ডাবল স্ল্যাশের শীর্ষস্থানীয়) উপেক্ষা করা হয় এবং একইভাবে আচরণ করা হয় /

পাথ রূপান্তর অক্ষম করুন

MSYS_NO_PATHCONVপরিবেশ পরিবর্তনশীল ব্যবহার করে গিট ব্যাশ (মিনিজিডাব্লু) এ পসিক্স পাথ রূপান্তরটি অক্ষম করুন ।

কমান্ড স্তরে পাথ রূপান্তরটি অক্ষম করা যেতে পারে:

touch test.txt
MSYS_NO_PATHCONV=1 docker run --rm -v $(pwd):/data busybox ls -la /data/test.txt
# -rwxr-xr-x    1 root     root             0 Jun 22 23:45 /data/test.txt

শেল (বা সিস্টেম) পর্যায়ে পাথ রূপান্তরটি অক্ষম করা যেতে পারে:

export MSYS_NO_PATHCONV=1
touch test.txt
docker run --rm -v $(pwd):/data busybox ls -la /data/test.txt
# -rwxr-xr-x    1 root     root             0 Jun 22 23:45 /data/test.txt

4
পথটি রূপান্তরটি অক্ষম করার সময় পালিয়ে যাওয়া আমার পক্ষে কার্যকর হয়নি বলে এই সমাধানটি সরবরাহ করার জন্য ধন্যবাদ।
চান্ড্যান্ডলার বং


0

আমি আসলে একই সমস্যা ছিল। আপনি গিট বাশ ব্যবহার করছেন কিনা তার উপর নির্ভর করে এই কমান্ডটি কাজ করে (উদাহরণ হিসাবে এনজিনেক্স ব্যবহার করে):

ডকার কনটেইনার চালান - নাম ধারক-নাম -v `পিডব্লিউ -ডাব্লু / এইচটিএমএল: / ইউএসআর / শেয়ার / এনগিনেক্স / এইচটিএমএল-পি 8000: 80-ডি এনজিনেক্স

অবশ্যই আপনি ইচ্ছামতো বন্দর এবং ডিরেক্টরি নির্দিষ্ট করতে পারেন।


0

আমার একই সমস্যা ছিল গিট ব্যাশে এবং কমান্ড প্রম্পটে নয়। আপনি পরিবর্তে করতে পারেন

docker run -it --rm -v "/${PWD}/D:\my\project\folder":/wkDir $IMAGE_TAG yarn dev

0

সোজা নীচে আমার জন্য কাজ করে। শুধু গতিশীল পরিবর্তনশীল ব্যবহার করবেন না।

docker run --rm -u root -p 8080:8080 -v jenkins-data/:/var/jenkins_home -v /var/run/docker.sock/:/var/run/docker.sock -v /Users/<YOUR USER NAME>/:/home jenkinsci/blueocean
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.