ডকারে চলমান / থামানো ধারকগুলির সম্পূর্ণ কমান্ড দেখুন


262

আমি কীভাবে ডকারে চলমান ধারক / প্রক্রিয়াটির সম্পূর্ণ কমান্ড দেখতে পারি?

$ docker ps --all
CONTAINER ID    IMAGE          COMMAND                 CREATED          STATUS                     PORTS    NAMES
5b6291859b61    nginx:1.7.8    "nginx -g 'daemon of    4 minutes ago    Exited (0) 4 minutes ago            thirsty_brattain

আমি কেবল "এনগিনেক্স-জি 'ডিমন" দেখতে পাচ্ছি .. এখানে, সম্পূর্ণ কমান্ড নয়।


2
এখানেও দেখুন: stackoverflow.com/q/32758793/1747983
টিলো

উত্তর:


543

docker ps --no-trunc চলমান ধারকগুলির অন্যান্য বিবরণ সহ পুরো কমান্ডটি প্রদর্শন করবে।


13
ধন্যবাদ এটি অনেক সাহায্য করেছে। কেবল একটি নোট: '-নোট্রঙ্ক' অবমূল্যায়িত হয়েছে, প্রতিস্থাপন করেছে --no-trunc
প্রমিথিউস

2
এটি আমার পক্ষে কাজ করে না। এটি আমাকে কমান্ড দিয়েছে তবে সমস্ত স্যুইচ নয় (যা "ফুল কমান্ড" ব্যবহার করার সময় আমি মনে করি)। উপরের অন্যান্য লিঙ্কটিতে উল্লিখিত রানলাইক কমান্ডটি আমার জন্য আরও ভাল কাজ করেছে।
ডিলান স্মিথ

1
শুধুমাত্র চলমান পাত্রে সম্পূর্ণ কমান্ডের জন্য সমস্ত কমান্ড সরিয়ে দিন। docker ps --no-trunc
জ্যাকব মরিস

ধন্যবাদ - সংশোধন। আমার আগের কমান্ডটি সমস্ত পাত্রে ছিল এবং কেবল চালানো পাত্রে নয় যা আসল প্রশ্ন।
স্কট এস

নিরীক্ষিত কমান্ডটি খুব দীর্ঘ হতে পারে, প্রতিটি লাইনে কেবল প্রথম 400 টি অক্ষর দেখুনdocker ps --all --no-trunc|cut -c-400
রুব 77

183

ব্যবহার করুন:

docker inspect -f "{{.Name}} {{.Config.Cmd}}" $(docker ps -a -q)

... এটি সমস্ত পাত্রে "ডকার পরিদর্শন" করে।


8
এটি ডকার পিএস কমান্ডটি প্রদর্শন করে না। ডকার পিএস কমান্ড ডকার পরিদর্শনকারী পাথ এবং আরোগুলির সাথে সম্পর্কিত।
জেডিম্যাটটিও

3
জানুয়ারী হিসাবে কোনও বুয়েনো 2018 নয়
এসএইচ

4
অর্থাত্docker inspect -f "{{.Name}} {{.Path}} {{.Args}}" $(docker ps -a -q)
পল

2
আপনি যদি কেবল sudoকমান্ডের সামনে ছোঁড়াচ্ছেন তবে ধারকটির "docker inspect" requires at least 1 argument(s).সমস্ত নাম পেতে দ্বিতীয় কল আসবে, আপনি সম্ভবত ঠিক এর ভিতরে একটি সুডো যুক্ত করতে চাইবেন $(
র্যান্ডমআইসানসো

এবং যারা ভাল -f ক্যোয়ারী বুঝতে চান তাদের জন্য, আমি একটি ভাল ব্যাখ্যা এখানে পাওয়া করেছি container-solutions.com/docker-inspect-template-magic
intijk

16

ব্যবহার করুন:

docker inspect -f "{{.Path}} {{.Args}} ({{.Id}})" $(docker ps -a -q)

এটি কমান্ডের পথ এবং আর্গুমেন্টগুলির অনুরূপ প্রদর্শন করবে docker ps


আপনি যেমন একটি নির্দিষ্ট কমান্ড যেমন অনুসন্ধান করতে এটি পরিবর্তন করতে চান kube-apiserver?
জোনাথন

@ docker inspect -f "{{.Path}} {{.Args}} ({{.Id}})" $(docker ps -a -q) | grep kube-apiserver
জোনাথন

8

গিট সংগ্রহস্থল https://github.com/lavie/runlike থেকে রানক্লেইক ব্যবহার করুন

রানলাক ইনস্টল করতে

pip install runlike

এটি কনটেইনার আইডিটিকে আর্গুমেন্ট হিসাবে গ্রহণ করে তাই ধারক আইডিটি নিষ্ক্রিয় করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন

docker ps -a -q

নিম্নলিখিত কমান্ড সহ সম্পূর্ণ ডকার রান কমান্ড নিষ্কাশন করতে আপনি রানলাইক ব্যবহার করা ভাল

runlike <docker container ID>

কাজ করে না। "কমান্ড 'দেখান [' ডকার ',' ইন্সপেক্ট ', u'06e6a369f909'] 'শূন্য-বহির্গমন প্রস্থান ফিরিয়ে আনা হয়েছে 1"
fstang

আমি যেমনটি উল্লেখ করেছি তেমন রানকল ইনস্টল করেছেন
অভিষেক জৈন

5
আরও ভাল আপনি ডকার পাত্রে রানলাইক চালাতে পারেন এবং এটি ইনস্টল করা এড়াতে পারেন:docker run --rm -v /var/run/docker.sock:/var/run/docker.sock assaflavie/runlike YOUR-CONTAINER
ডিলান স্মিথ

3

টি এল-ডিআর

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}}"'

2

ডিলানের মন্তব্যে একটি পূর্ণ-বিকাশের উত্তরে সরানো কারণ খুব কার্যকর:

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock assaflavie/runlike YOUR-CONTAINER

এটার কাজ কি? চালায় https://github.com/lavie/runlike একটি ধারক ভিতরে, আপনি সম্পূর্ণ Docker রান কমান্ড পায়, তারপর আপনি জন্য ধারক সরিয়ে ফেলা হয়।

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