এর JSON সিনট্যাক্স CMD
(এবং RUN
এবং ENTRYPOINT
) একটি Exec প্রাপ্ত syscall সরাসরি কার্নেল আর্গুমেন্ট পাস। এক্সিকিউটি সিস্টেমে কমান্ডকে ফাঁক দিয়ে ফাঁকে ফাঁকে ফাঁকে পাওয়া, আইও পুনঃনির্দেশকরণ, পরিবর্তনশীল প্রতিস্থাপন, কমান্ডগুলির মধ্যে পাইপিং, একাধিক কমান্ড চালানো ইত্যাদি ইত্যাদি নেই from সিস্কেল কেবল চালানোতে এক্সিকিউটেবল এবং সেই নির্বাহযোগ্যকে প্রেরণের জন্য আর্গুমেন্টের তালিকা গ্রহণ করে এবং এটি এটি চালায়।
অক্ষরগুলি $
ভেরিয়েবলগুলি প্রসারিত করা, ;
পৃথক কমান্ড,
(স্পেস) পৃথক যুক্তি, &&
এবং ||
চেইন কমান্ডগুলি, >
আউটপুট পুনর্নির্দেশের জন্য, |
কমান্ডগুলির মধ্যে পাইপ ইত্যাদির মতো সমস্ত শেলের বৈশিষ্ট্য এবং সেগুলির ব্যাখ্যা /bin/sh
বা /bin/bash
বাস্তবায়ন করার মতো কিছু দরকার ।
আপনি যদি স্ট্রিং সিনট্যাক্সে স্যুইচ করেন তবে CMD
ডকার আপনার কমান্ডটি শেল দিয়ে চালাবে:
CMD /etc/init.d/nullmailer start ; /usr/sbin/php5-fpm
অন্যথায়, আপনার দ্বিতীয় বাক্য গঠন ঠিক একই জিনিসটি করে:
CMD ["sh", "-c", "/etc/init.d/nullmailer start ; /usr/sbin/php5-fpm"]
নোট করুন যে আমি কোনও ধারকটির ভিতরে এইভাবে একাধিক কমান্ড চালানোর পরামর্শ দিচ্ছি না কারণ আপনার প্রথম কমান্ড ব্যর্থ হলে বিশেষত যদি এটি ব্যাকগ্রাউন্ডে চলে তবে হ্যান্ডলিংয়ে কোনও ত্রুটি নেই। আপনি ধারকটির ভিতরে পিড 1 হিসাবে চলমান একটি শেল ছেড়ে যান যা সিগন্যাল হ্যান্ডলিংটি ভেঙে দেবে, ফলস্বরূপ 10 সেকেন্ড দেরি হবে এবং ডকার দ্বারা আপনার ধারকটিকে অকথ্যভাবে হত্যা করবে। শেল exec
কমান্ড ব্যবহার করে সংকেত হ্যান্ডলিং হ্রাস করা যায় :
CMD /etc/init.d/nullmailer start ; exec /usr/sbin/php5-fpm
যাইহোক, প্লেগ্রাউন্ডে নিঃশব্দে ব্যর্থ হওয়া হ্যান্ডলিং প্রক্রিয়াগুলির জন্য আপনাকে সুপারভাইজারের মতো একধরণের মাল্টি-প্রসেস ম্যানেজারে স্যুইচ করতে হবে, বা আপনার অ্যাপ্লিকেশনটিকে একাধিক পাত্রে ব্রেক করা এবং ডকার-রচনার মতো কিছু দিয়ে তাদের স্থাপন করা দরকার।
exec
এটি এখনও পছন্দসই ফর্ম হিসাবে আমার এই ফর্মটি ব্যবহার করা উচিত ? কেন এটি পছন্দ? অথবা আমি সহজshell
ফর্ম ব্যবহার করা উচিত ?