ডকার অ্যালপাইন পাত্রে একটি শেল শুরু করা


165

উবুন্টু চিত্রের জন্য একটি ইন্টারেক্টিভ শেল শুরু করতে আমরা চালাতে পারি:

ole@T:~$ docker run -it --rm ubuntu
root@1a6721e1fb64:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

তবে যখন এটি আলপাইন ডকার চিত্রের জন্য পরিচালিত হয় , নিম্নলিখিত ফলাফলগুলি:

ole@T:~$ docker run -it --rm alpine
Error response from daemon: No command specified

আলপাইন বেস ধারকটিতে একটি ইন্টারেক্টিভ শেল শুরু করার জন্য কমান্ডটি কী?

উত্তর:


282
ole@T:~$ docker run -it --rm alpine /bin/ash
(inside container) / # 

বিকল্পগুলি উপরে ব্যবহৃত:

  • /bin/ashব্যাসিবক্স দ্বারা সরবরাহিত অ্যাশ ( অ্যালকুইস্ট শেল )
  • --rmকনটেইনারটি বের হয়ে গেলে স্বয়ংক্রিয়ভাবে সরান ( docker run --help)
  • -i ইন্টারেক্টিভ মোড (সংযুক্ত না থাকলেও এসটিডিএন খোলা রাখুন)
  • -t একটি সিডো-টিটিওয়াই বরাদ্দ করুন

1
অবশ্যই - ভাল ধারণা - ছাই শেল এবং --rm রান শেষ হওয়ার পরে ধারকটি সরিয়ে দেয়। সুতরাং আপনি যদি চান যে রানার পরেও ধারকটি এখনও পাওয়া যায় তবে --rm এর ব্যবহারটি এড়িয়ে যান। আমি এটিএম ব্যবহার করছি কারণ আমি কেবল এটিএম পরীক্ষা করছি।
ওলে

তাহলে উবুন্টুর মতো বিচ্ছিন্ন সম্পত্তি দিয়ে কীভাবে এটি চালানো যায়?
বেনিয়ামিন লিম্যান্টো

আমি উভয় ক্ষেত্রে বিশ্বাস করি ... উবুন্টু বা আলপাইন ... আপনি কেবল এটির -dবিকল্প দিন।
ওলে

2
আলপাইন রয়েছে ashএবং তা নয় bash, এটি উল্লেখ করার জন্য +1 যা আল্পাইন সম্পর্কে খুব বেশি পরিচিত ছিল না, এটিই আমাকে পেয়েছিল এবং আমাকে আগে পাত্রে প্রবেশ করতে বাধা দেয়।
কোড_ড্রেড

যদি আপনি আরএইচইএলে থাকেন এবং অনুমতি ত্রুটিটি অস্বীকার করেন তবে এটি আবার সেলিনাক্স ... অস্থায়ীভাবে 0 টি সেটিংফোর্স করা উচিত: পি
পার্থ প্যাটেল

67

সাধারণত, একটি আলপাইন Linux ইমেজের ধারণ করে না bash, এর পরিবর্তে আপনি ব্যবহার করতে পারেন /bin/ash, /bin/sh, ashঅথবা শুধুমাত্র sh

/ বিন / ছাই

docker run -it --rm alpine /bin/ash

/ বিন / SH

docker run -it --rm alpine /bin/sh

ছাই

docker run -it --rm alpine ash

SH

docker run -it --rm alpine sh

আমি আশা করি এই তথ্য আপনাকে সাহায্য করবে।


1
মধ্যে পার্থক্য কি /bin/ashএবং ash? /bin/shএবং অনুরূপ sh
পিটার মর্টেনসেন

1
হাই @ পিটার-মর্টেনসেন, পার্থক্যটি ashএটি কেবল একটি প্রতীকী লিঙ্ক /bin/ash। কিছু লিনাক্স বিতরণে প্রতীকী লিঙ্ক নেই।
জনসঞ্চে

28

আজকাল, আলপাইন চিত্রগুলি /bin/shচালানোর জন্য কোনও শেল নির্দিষ্ট না করেই ডিফল্টরূপে সরাসরি বুট হবে :

$ sudo docker run -it --rm alpine  
/ # echo $0  
/bin/sh  

এই, যেহেতু alpineইমেজ Dockerfiles এখন একটি ধারণ CMDকমান্ড যে নির্দিষ্ট করে শেল চালানো যখন ধারক শুরু হয়: CMD ["/bin/sh"]

পুরানো আলপাইন চিত্র সংস্করণগুলিতে (২০১৩-পূর্ববর্তী), সিএমডি কমান্ড ব্যবহার করা হয়নি, যেহেতু ডকার সিএমডি-র জন্য একটি অতিরিক্ত স্তর তৈরি করতেন যা চিত্রের আকার বাড়িয়ে তোলে। এটি এমন কিছু যা আলপাইন চিত্র বিকাশকারীরা এড়াতে চেয়েছিল। সাম্প্রতিক ডকার সংস্করণগুলিতে (1.10+), সিএমডি আর কোনও স্তর দখল করে না, এবং তাই এটি alpineচিত্রগুলিতে যুক্ত করা হয়েছিল । সুতরাং, যতক্ষণ না সিএমডি ওভাররাইড না করা হয়, সাম্প্রতিক আলপাইন চিত্রগুলি বুট হবে /bin/sh

রেফারেন্সের জন্য, গ্লাইডার ল্যাবগুলি কর্তৃক অফিসিয়াল আলপাইন ডকফিলিলে নিম্নলিখিত প্রতিশ্রুতি দেখুন:
https://github.com/gliderlabs/docker-alpine/commit/ddc19dd95ceb3584ced58be0b8d7e9169d04c7a3#diff-db3dfdee92c17c555aa


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