টি এল-ডিআর
docker ps --no-truncএবং docker inspect CONTAINERকমান্ডটি প্রেরণ করার সাথে সাথে ধারকটি শুরু করার জন্য নির্বাহ করা এন্ট্রিপয়েন্ট সরবরাহ করে তবে এতে কিছু অংশ মিস হতে পারে ${ANY_VAR}কারণ ধারক পরিবেশের ভেরিয়েবলগুলি সমাধান হিসাবে মুদ্রিত হয়নি।
docker inspect CONTAINERএটি কাটিয়ে ওঠার জন্য একটি সুবিধা রয়েছে কারণ এটি Config.Envসম্পত্তি থেকে ধারক হিসাবে সংজ্ঞায়িতভাবে পৃথকভাবে env ভেরিয়েবলগুলি এবং তাদের মানগুলি পুনরুদ্ধার করতে দেয় ।
docker psএবং docker inspectসম্পাদিত এন্ট্রিপয়েন্ট এবং এর কমান্ড সম্পর্কে তথ্য সরবরাহ করুন। প্রায়শই এটি একটি মোড়ক এন্ট্রিপয়েন্ট স্ক্রিপ্ট ( .sh) এবং ধারক দ্বারা শুরু করা "আসল" প্রোগ্রাম নয়। সে সম্পর্কে তথ্য পেতে, প্রক্রিয়া সম্পর্কিত তথ্য psবা /proc/1/cmdlineসাহায্যের জন্য অনুরোধ করা হচ্ছে ।
1) docker ps --no-trunc
এটি এন্টিপয়েন্টটি প্রিন্ট করে এবং সমস্ত চলমান ধারকগুলির জন্য আদেশটি কার্যকর করে। এটি কমান্ডটি এন্ট্রিপয়েন্টে পাস হওয়া প্রিন্ট করার সময় (যদি আমরা এটি পাস করি), এটি ডকার এনভ ভেরিয়েবলের (যেমন $FOOবা ${FOO}) এর মান দেখায় না ।
যদি আমাদের পাত্রে এনভি ভেরিয়েবল ব্যবহার হয় তবে এটি পর্যাপ্ত নাও হতে পারে।
উদাহরণস্বরূপ, একটি আলপাইন ধারক চালান:
docker run --name alpine-example -e MY_VAR=/var alpine:latest sh -c 'ls $MY_VAR'
ডকার-অ্যাপস ব্যবহার করার সময় যেমন:
ডকার পিএস -এ - ফিল্টার নাম = আলপাইন-উদাহরণ - না-ট্রাঙ্ক
এটি প্রিন্ট করে:
কন্টেইনার আইডি ইমেজ কম্যান্ড তৈরি স্ট্যাটাস পোর্টস নাম
5b064a6de6d8417 ... আলপাইন: সর্বশেষ "sh -c 'ls $ MY_VAR'" 2 মিনিট আগে Exmitted (0) 2 মিনিট আগে আল্পাইন-উদাহরণ
আমরা কমান্ডটি এন্টিপয়েন্টে পাস দেখতে পাচ্ছি: sh -c 'ls $MY_VAR'তবে $MY_VAR প্রকৃতপক্ষে সমাধান হয়নি resolved
2) docker inspect CONTAINER
আমরা যখন আলপাইন-উদাহরণ পাত্রে পরিদর্শন করি:
docker inspect alpine-example | grep -4 Cmd
কমান্ডটি সেখানে রয়েছে তবে আমরা এখনও এনভেরি ভেরিয়েবলের মান দেখতে পাই না:
"Cmd": [
"sh",
"-c",
"ls $MY_VAR"
],
আসলে, আমরা এই ডকার কমান্ডগুলির সাথে ইন্টারপোল্টেড ভেরিয়েবলগুলি দেখতে পেতাম না।
ট্রেড অফ হিসাবে থাকাকালীন, ডকার ইন্সপেক্ট সহ একটি ধারকটির জন্য আমরা পৃথকভাবে কমান্ড এবং এনএনভি ভেরিয়েবল উভয়ই প্রদর্শন করতে পারি:
docker inspect alpine-example | grep -4 -E "Cmd|Env"
যে মুদ্রণ:
"Env": [
"MY_VAR=/var",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"sh",
"-c",
"ls $MY_VAR"
]
আরও ডক উপায় হ'ল এর --formatপতাকাটি ব্যবহার docker inspectকরা হবে যা রেন্ডার করতে JSON বৈশিষ্ট্যগুলি নির্দিষ্ট করতে দেয়:
docker inspect --format '{{.Name}} {{.Config.Cmd}} {{ (.Config.Env) }}' alpine-example
ফলাফল:
/ আলপাইন-উদাহরণ [sh -c ls $ MY_VAR] [MY_VAR = / var PATH = / usr / স্থানীয় / sbin: / usr / স্থানীয় / বিন: / usr / sbin: / usr / বিন: / sbin: / বিন]
3) পাত্রে চালানোর জন্য নিজেই ধারক থেকে শুরু করা প্রক্রিয়াটি পুনরুদ্ধার করুন
ডকার দ্বারা চালিত এন্ট্রিপয়েন্ট এবং কমান্ড সহায়ক হতে পারে তবে কিছু ক্ষেত্রে এটি যথেষ্ট নয় কারণ এটি "কেবল" একটি র্যাপার এন্ট্রিপয়েন্ট স্ক্রিপ্ট ( .sh) যা সত্য / মূল প্রক্রিয়া শুরু করার জন্য দায়ী।
উদাহরণস্বরূপ, যখন আমি একটি নেক্সাস ধারক চালনা করি, কমান্ডটি চালিত হয় এবং ধারকটি চালানোর জন্য দেখানো হয় "sh -c ${SONATYPE_DIR}/start-nexus-repository-manager.sh"।
PostgreSQL এর জন্য "docker-entrypoint.sh postgres"।
আরও তথ্য পেতে, আমরা চলমান ধারকটিতে চালিত করতে পারি
docker exec CONTAINER ps aux।
এটি এমন অন্যান্য প্রক্রিয়াগুলি মুদ্রণ করতে পারে যা আমাদের আগ্রহী নয়।
এন্ট্রিপয়েন্ট দ্বারা সূচিত প্রাথমিক প্রক্রিয়া সংকীর্ণ করতে, আমরা এটি করতে পারি:
docker exec CONTAINER ps -1
আমি উল্লেখ করেছি 1কারণ এন্ট্রিপয়েন্ট দ্বারা সম্পাদিত প্রক্রিয়াটি সাধারণত আইডির সাথেই হয় 1।
ছাড়া ps, আমরা তথ্যের সন্ধান করতে পারি /proc/1/cmdline(বেশিরভাগ লিনাক্সের ডিস্ট্রোজে কিন্তু সমস্তটি নয়)। উদাহরণ স্বরূপ :
docker exec CONTAINER cat /proc/1/cmdline | sed -e "s/\x00/ /g"; echo
কনটেইনারটি শুরু করার মতো ডকার হোস্টের কাছে যদি আমাদের অ্যাক্সেস থাকে তবে এন্ট্রিপয়েন্ট দ্বারা সম্পাদিত প্রক্রিয়াটির সম্পূর্ণ কমান্ড পাওয়ার আরেকটি বিকল্প হ'ল:: ডায়কার ps -PIDডিমন কর্তৃক কনটেইনারটি চালনার জন্য তৈরি পিআইডি হ'ল স্থানীয় প্রক্রিয়া যেমন:
ps -$(docker container inspect --format '{{.State.Pid}}' CONTAINER)
ডকার পিএস সহ ব্যবহারকারী-বান্ধব বিন্যাস
docker ps --no-truncপড়া সবসময় সহজ হয় না।
মুদ্রণের জন্য কলামগুলি নির্দিষ্ট করতে এবং একটি সারণী বিন্যাসে এটি আরও উন্নত করতে পারে:
docker ps --no-trunc --format "table{{.Names}}\t{{.CreatedAt}}\t{{.Command}}"
একটি উপকরণ তৈরি করতে সাহায্য করতে পারে:
alias dps='docker ps --no-trunc --format "table{{.Names}}\t{{.CreatedAt}}\t{{.Command}}"'