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


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.