পর্যায়ক্রমিক কাজের জন্য ব্যবহৃত হলে ডকার ধারক রাখার সঠিক উপায় শুরু হয়

আমি ইনস্টল এবং কনফিগার সফ্টওয়্যার সঙ্গে ডকার ধারক আছে.

সব সময় শুরু/চালানো অনুমিত কোন প্রোগ্রাম নেই.

আমি কি চাই-বাহ্যিক ঘটনা উপর নির্ভর করে কিছু কমান্ড শুরু করার ক্ষমতা. পছন্দ:

docker exec mysupercont /path/to/mycommand -bla -for

এবং

docker exec mysupercont /path/to/myothercommand 

কিন্তু ধারক বন্ধ করা হয় যখন অসম্ভব" এক্সেক", এবং এই ধারক ভিতরে কিছু "কাজ" তথ্য আছে, যা যে কমান্ডের জন্য ব্যবহৃত, তাই আমি ব্যবহার করতে পারবেন না

docker run ...

প্রতিটি সময়, এটা ইমেজ থেকে ধারক পুনঃ এবং আমার তথ্য ধ্বংস কারণ.

এই জাতীয় ধারকটি চালানোর জন্য "সঠিক" এবং "সেরা" উপায় কী? কোন কমান্ড আমি ভিতরে শুরু করতে পারি?

আপনি প্রতিটি সময় সঞ্চালন করতে হবে না docker run.

docker run আসলে দুটি কমান্ডের ক্রম: "সৃষ্টি" এবং "শুরু".

আপনি যখন ধারকটি চালান, আপনাকে অবশ্যই উল্লেখ করতে হবে "-it":

- আমি, -- ইন্টারেক্টিভ=মিথ্যা সংযুক্ত না থাকলেও স্টডিনকে খোলা রাখুন
- টি, --টিটিওয়াই = মিথ্যা একটি ছদ্ম-টিটিওয়াই বরাদ্দ করুন

উদাহরণ:

docker run -it debian:stable bash

কাজ সম্পন্ন হওয়ার পর কমান্ড প্রারম্ভে নির্দিষ্ট (আমার উদাহরণ ব্যাশে). উদাহরণস্বরূপ, আপনি সঞ্চালন "প্রস্থান". কনটেইনার স্টপ:

CONTAINER ID        IMAGE                      COMMAND                CREATED             STATUS                     PORTS               NAMES1329c99a831b        debian:stable              "bash"                 51 seconds ago      Exited (0) 1 seconds ago                       goofy_bardeen

এখন আপনি এটি আবার শুরু করতে পারেন

docker start 1329c99a831b

ধারকটি শুরু হয় এবং আবার কমান্ডটি কার্যকর করে "বাশ".
এই সেশনের সাথে সংযোগ করুন "বাশ" কমান্ডের সাথে

docker attach 1329c99a831b

যোগফল: আপনি মধ্যে পার্থক্য বুঝতে হবে run এবং start ধারক.
পাশাপাশি, তাকান ডকুমেন্টেশন পরামিতি ভূমিকা জন্য"-i t"এবং"-d"রান" এর জন্য

যেহেতু আপনি পর্যায়ক্রমিক কাজগুলি উল্লেখ করেছেন এবং আপনি সম্ভবত ক্রনের মতো কিছু ব্যবহার করছেন কারণ আপনি যেভাবে ব্যবহার করতে চান docker exec, আমি শুধু আপনার জন্য ঔষধ আছে. অন্তত আমি এই মত কিছু কাজ শেষ পর্যন্ত.

  1. ডকারফিল

    FROM <some base>CMD tail -f /dev/null
  2. স্বাভাবিক সঙ্গে চালান docker run -d .... (আমি ব্যবহার করেছি docker-compose)

  3. উদাহরণস্বরূপ, হোস্ট মেশিনগুলি ক্রোনট্যাব সেটআপ করুন:

    * * * * * docker exec mysupercont foo >> /var/log/foo.log 2>&1* * * * * docker exec mysupercont bar >> /var/log/bar.log 2>&1

আমরা একটি সুন্দর ডিফল্ট লিনাক্স পরিবেশে প্রাচীন এবং প্রমাণিত ক্রন্টাবের উপর নির্ভর করতে পেরে আমি এই সমাধানটি খুব সুন্দর মনে করি, যখন ডকার আপনার ব্যবসায়িক যুক্তির আরও বহিরাগত ডিপিএস এবং পরিবেশের ভেরিয়েবলগুলি পরিচালনা করে মেমরি তথ্য ফাঁসের বা যাই হোক না কেন আছে; আপনার পর্যায়ক্রমিক কর্ম আটকে ও রহমান পেতে যদি আপনি কিছু সীমা সেট করতে পারেন.

লেঙ্গুড় এখনও সময়ে সময়ে কিছু ফাইল অপারেশন ঘটায় হবে.

কোনও পার্শ্ব প্রতিক্রিয়া ছাড়াই চিরকাল ঘুমান

# Ah, ha, ha, ha, stayin' alive...while :; do :; done & kill -STOP $! && wait $!

এটা কিভাবে কাজ করে

while :;           # Run an endless loop,do :;              # of do nothing,done &             # as background task.kill -STOP $!      # Stop the background task.wait $!            # Wait forever, because background task process has been stopped.

আপনি একটি থামানো ধারক শুরু করতে পারেন কি না তা এই পুরো ব্যবসা, ধারক মূলত তৈরি করা হয়েছিল কিভাবে উপর নির্ভরশীল, অর্থাৎ চালান. আপনি শেষ যে একটি কমান্ড দৌড়ে, অথবা আপনি একটি ইন্টারেক্টিভ কমান্ড থেকে প্রস্থান করুন, যেমন ব্যাশ, আপনি শুরু পুনরায় আরম্ভ বা থামানো ধারক চালানো যাবে না. আপনি কি করতে পারেন তা অপসারণ করা হয়. এটা আবর্জনা.

তবে তারানাকির শেষ মন্তব্য, '- আইটিডি ' ব্যবহার করুন, ডকার যা আদেশ করেছিলেন তা বলে মনে হচ্ছে

ধারক চলমান রাখে, এবং আপনি আপনি চান যাই হোক না কেন নির্বাহ করতে পারেন, এবং আপনি বন্ধ শুরু বা ধারক পুনরায় আরম্ভ করতে পারেন. অবশ্যই, এই আলপাইন ইমেজ উপর ভিত্তি করে শুধু একটি প্রাথমিক গবেষনার হয়. দ্রষ্টব্য, আপনি যদি ধারকটির সাথে সংযুক্ত হন তবে আপনি প্রস্থান করার সময় এটি বন্ধ হয়ে যাবে, তবে আপনি এটি আবার শুরু করতে পারেন

আমি এখানে প্রস্তাবিত সমস্ত সমাধান নিজেই ব্যবহার করেছি, তবে যখন ধারকটি বন্ধ করতে চায় তখন ডকার ডেমন থেকে আসা সিগটারম সংকেতগুলি পরিচালনা করে না (উদাঃ docker stop $containername).

তাই আমি নিম্নলিখিত প্রস্তাব:

FROM base:image# ...CMD sh -c 'trap "exit" TERM; while true; do sleep 1; done'

এটি মূলত একটি ছোট শেল স্ক্রিপ্ট যা প্রথমে বাধা দেয় (উদ্ধৃতি; ট্র্যাপস; উদ্ধৃতি) সিগটারম সংকেত এবং তারপরে অসীম লুপে এক সেকেন্ডের জন্য ঘুমাতে যায়.

আমি মূলত এটি ডকার-রচনা এবং এর সাথে একসাথে ব্যবহার করি ওফেলিয়া অন্য পাত্রে কিছু অন্যান্য পরিষেবা ব্যাকআপ করার জন্য পাশের গাড়ির পাত্রে সরবরাহ করা (উদাঃ মারিয়াডিবি ডাটাবেস).

এটি একটি খুব ভাল ব্যাখ্যা প্রশ্ন. অনুরূপ পোস্ট দেখুনhere.