হোস্টের কাছ থেকে কীভাবে ডকার কনটেইনার আইপি ঠিকানা পাবেন


1406

নতুন ধারক তৈরি হওয়ার পরে ঠিক হোস্টের কাছ থেকে কনটেইনারটির আইপি অ্যাড্রেস পেতে আমি যে আদেশটি চালাতে পারি তা কি আছে?

মূলত, ডকার একবার ধারক তৈরি করার পরে, আমি আমার নিজের কোড স্থাপনা এবং ধারক কনফিগারেশন স্ক্রিপ্টগুলি রোল করতে চাই।


28
আমি কেবল এটি নিশ্চিত করতে চেয়েছিলাম যে অন্যান্য নুবগুলি আমার ভুল না করে এবং ধারকটির পরিবর্তে চিত্র থেকে আইপি নেওয়ার চেষ্টা করে। নিশ্চিত করুন যে আপনি সিআইডি বা ধারক আইডি পেয়েছেন এবং ক্যোয়ারী; সিআইডি 'ডকার পিএস' এর মাধ্যমে।
পল গ্রেগোয়ার

কিভাবে তদ্বিপরীত পেতে? হোস্ট আইপি বা ধারক থেকে কল?
সোমনাথ মুলুক 4'18

উত্তর:


2322

--formatবিকল্প inspectরেসকিউ আসে।

আধুনিক ডকার ক্লায়েন্ট সিনট্যাক্সটি হ'ল:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id

ওল্ড ডকার ক্লায়েন্ট সিনট্যাক্সটি হ'ল:

docker inspect --format '{{ .NetworkSettings.IPAddress }}' container_name_or_id

এই আদেশগুলি ডকারের ধারকটির আইপি ঠিকানাটি ফিরিয়ে দেবে।

মন্তব্যে উল্লিখিত হিসাবে: আপনি উইন্ডোতে থাকলে, কোঁকড়া ধনুর্বন্ধনীগুলির চারপাশে "একক উদ্ধৃতিগুলির পরিবর্তে ডাবল কোট ব্যবহার করুন '


34
এটি অনেকটা, আরও ভাল সমাধান। আপনার যদি প্রয়োজন হয় কেবল তার জন্যই জিজ্ঞাসা করুন, সম্ভব হলে!
মাইকিবি

8
হুম। একটি পথ <no value>গুলো / Boot2Docker ব্যবহার করে একটি ম্যাক প্রতিক্রিয়া
cevaris

2
@cevaris আপনি যদি এমন <no value>কোনও ধারক চালাচ্ছেন না যার বিরুদ্ধে চালানোর চেষ্টা করেন আপনি পাবেন । আপনি এটি করার আগে আপনার ধারকটি চলমান রয়েছে তা নিশ্চিত করুন।
TheJediCowboy

55
! সতর্কবার্তা! এটি আর কাজ করে না। নতুন ফর্ম্যাটটি ধারকটির সাথে নির্দিষ্ট এবং ফর্মটি অনুসরণ করে {{ .NetworkSettings.Networks.$network.IPAddress }}। ডিফল্টটি সেতু হিসাবে উপস্থিত বলে মনে হয়, তবে ডকার-রচনার অধীনে এটি একটি নির্দিষ্ট নাম হবে যা আপনার অ্যাপ্লিকেশনটির নামের উপর নির্ভর করে (আমি মনে করি - প্রকল্পের নাম পতাকাটি থেকে, যদিও এটি কী ধরণের নেটওয়ার্কিং কনফিগারেশনের উপর নির্ভর করে আপনি সেট আপ করেছেন)। আমি এখানে একটি উত্তরে একটি সম্পূর্ণ উত্তর লিখেছিলাম stackoverflow.com/questions/17157721/…
ডঙ্ক

5
হতে পারে আমি নিদ্রাহীন ভেড়া, কিন্তু ডাবল উদ্ধৃতি সম্পর্কে সতর্কতা আমার দৃষ্টি আকর্ষণ করার মতো সাহসী এবং চোখের পলক ছিল না। সম্ভবত লিনাক্স এবং উইন্ডোজ লেবেলযুক্ত দুটি উদাহরণ সরবরাহ করুন। আমি আক্ষরিকভাবে উদাহরণটি টাইপ করেছি, ডকগুলি পরীক্ষা করেছিলাম যা একক উদ্ধৃতি ব্যবহার করে এবং তারপরে ত্রুটিটি গুগল করে। আমি নিশ্চিত আমি একা নই
উইক

513

আপনি ব্যবহার করতে পারেন docker inspect <container id>

উদাহরণ স্বরূপ:

CID=$(docker run -d -p 4321 base nc -lk 4321);
docker inspect $CID

67
আইপি এক্সট্রাক্ট করার জন্য, আপনি এর মতো কিছু করতে পারেন docker inspect $CID | grep IPAddress | cut -d '"' -f 4, এটি দুর্দান্ত কাজ করে :)
ক্র্যাক

9
এগুলি সমস্ত একত্রিত করে, এই শেল ওরফেতে সমস্ত ধারক আইডি এবং তাদের আইপস তালিকাভুক্ত করা উচিত:alias dockerip='docker ps | tail -n +2 | while read cid b; do echo -n "$cid\t"; docker inspect $cid | grep IPAddress | cut -d \" -f 4; done'
কো-ডস

64
@ ব্যবহারকারী3119830 দ্বারা উল্লিখিত হিসাবে, পরিদর্শন করার জন্য একটি নতুন বিকল্প রয়েছে। এখন, আপনি আইপি আরও সহজ পেতে পারেনdocker inspect -format '{{ .NetworkSettings.IPAddress }}' ${CID}
7:44

16
শুধু একটি নোট. একক ড্যাশ বিকল্পগুলি হ্রাস করা হচ্ছে যাতে ফর্ম্যাট - ফর্ম্যাট হয়ে যায়।
জামতুর01

7
docker inspect -format '{{ .NetworkSettings.IPAddress }}' ${CID}নতুন বাক্য গঠন। -formatঅবচয় করা হয়, হয়ে যায় --format
ডেভি

408

প্রথমে ধারক আইডি পান:

docker ps

(প্রথম কলামটি ধারক আইডির জন্য)

চালানোর জন্য ধারক আইডি ব্যবহার করুন:

docker inspect <container ID>

নীচে, "নেটওয়ার্কসেটিংস" এর অধীনে, আপনি "আইপিএড্রেস" খুঁজে পেতে পারেন

বা কেবল করুন:

docker inspect <container id> | grep "IPAddress"

5
খুব খারাপ, আমার একটি উদাহরণে (দিয়ে শুরু হয়েছিল docker run -it MYCONTAINER /bin/bash), আউটপুটটির inspectকোনও বিভাগ নেই NetworkSettings!
এরিক

3
এটি উইন্ডোজ 10 এ কাজ করে না You আইপোনফিগের সাথে আপনাকে ডকারনেটের আইপি ঠিকানা খুঁজে বার করতে হবে।
ntiedt

@ এরিক আপনি এর জন্য নেটওয়ার্ক ব্রিজও পরিদর্শন করতে পারেন:docker network inspect bridge | grep Gateway | grep -o -E '[0-9.]+'
টমাসজ কাপেওস্কি

5
... | grep IPআইপি পেতে প্রয়োজনীয় সমস্ত ফরম্যাটিং বিশদগুলির সমাধানটি আমি ব্যাপকভাবে পছন্দ করি । +1
d8aninja

1
@ এরিক - আপনি চিত্রের সাথে কনটেইনারটি বিভ্রান্ত করেছেন । কমান্ডটি আসলে (এটি কোনও ধারকের নাম নয়); আপনি যদি করেন তবে আপনি চিত্র সম্পর্কে স্থির তথ্য পাবেন । আপনাকে চলমান ধারকটির নাম (বা অন্যের পরামর্শ অনুসারে এর আইডি ব্যবহার করতে হবে) খুঁজতে হবে। আমার সিস্টেমে, এই চিত্রটি থেকে তৈরি প্রথম এমন কন্টেইনারটির নাম পূর্বনির্ধারিত , সুতরাং নেটওয়ার্কসেটিংস রয়েছে। docker run -it MYIMAGEdocker inspect MYIMAGEMYIMAGE_1docker inspect MYIMAGE_1
টুলমেকারস্টেভ

214
docker inspect CONTAINER_ID | grep "IPAddress"

-iকেস উপেক্ষা করার জন্য আপনি গ্রেপ যুক্ত করতে পারেন তারপরেও নীচেরগুলিও কাজ করবে:

docker inspect CONTAINER_ID | grep -i "IPaDDreSS"

5
এই উত্তরটি কীভাবে অন্য 22 টির থেকে ভাল / আলাদা?
এসডিএস

এটি অবশ্যই সেরা উত্তর নয়। ওয়াউটারডির উত্তরটি আপনি যে উত্তরটি সন্ধান করছেন তা।
এম.ভান্ডারলি

7
@ এমভান্ডারলি এই উত্তরের একটি কমান্ড রয়েছে যা মনে রাখা সহজ, এটি এটি আরও ভাল উত্তর আইএমওতে পরিণত করে।
হাইজেনস্ট্র্রু

1
@ ওউটারহুয়েস্ট্রুট অবশ্যই, তবে আপনি একাধিক এন্ট্রি এবং আসল "আইপিএড্রেস" পাঠ্য পাবেন। আপনি কোনও হেরফের ছাড়াই স্ক্রিপ্টে এটি ব্যবহার করতে পারবেন না।
এম.ভান্ডারলি

তুমি ঠিক বলছো. প্রশ্নের প্রসঙ্গে, অন্য উত্তরটি আরও ভাল ফিট করে।
হাইজেন্ট্রুউ

133

কেবলমাত্র একটি একক কমান্ডে সমস্ত ধারকের নাম এবং তাদের আইপি ঠিকানাগুলি পেতে।

docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq)

আপনি যদি docker-composeকমান্ডটি ব্যবহার করছেন তবে এটি হ'ল:

docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)

আউটপুটটি হবে:

/containerA - 172.17.0.4
/containerB - 172.17.0.3
/containerC - 172.17.0.2

5
আমি সত্যিই এটি পছন্দ করি তবে এটি ডকার রচনাটির পক্ষেও কাজ করে না, তাদের নিজস্ব নেটওয়ার্ক থাকার সাথে কিছু করার জন্য। পরিবর্তে পরিবর্তন {{.NetworkSettings.IPAddress }}করতে{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}
clockworkgeek

এখানে প্রকরণ আমি ব্যবহারের আছে: docker inspect --format '{{ .NetworkSettings.IPAddress }}' $(docker ps -aq | xargs) | sed -e '/^$/d'sed(1)অপসারণ পাত্রে বর্তমানে খালি লাইন, কিন্তু একটি IP- ঠিকানা হচ্ছে না।
এনওয়াইসিজেস

97

আপনার ~/.bashrcবা প্রাসঙ্গিক ফাইলটিতে এই শেল স্ক্রিপ্টটি যুক্ত করুন:

docker-ip() {
  docker inspect --format '{{ .NetworkSettings.IPAddress }}' "$@"
}

তারপরে, একটি ধারকটির আইপি ঠিকানা পেতে, কেবল এটি করুন:

docker-ip YOUR_CONTAINER_ID

ডকারের নতুন সংস্করণের জন্য, দয়া করে নিম্নলিখিতটি ব্যবহার করুন:

docker-ip() {
        docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$@"
}

5
Template parsing error: template: :1:19: executing "" at <.NetworkSettings.IPA...>: map has no entry for key "NetworkSettings"
saiyancoder

এটি আমার পক্ষে কাজ করে তবে দরকারsource ~/.bash_profile
পেনি চ্যান

1
আপনি যদি কোনও চলমান ধারক পরিদর্শন না করে তবে এই চিত্রটি পাবেন ... একটি চিত্রের কোনও আইপিএড্রেস নেই ... ভয়ঙ্কর ত্রুটি বার্তা, হ্যাঁ
ড্যাজল্ফ

37

সমস্ত ধারকের আইপি ঠিকানাগুলি দেখান:

docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)

37

ডকার ১.৩++ এ আপনি এটি ব্যবহার করেও এটি পরীক্ষা করতে পারেন:

চলমান ডকার (লিনাক্স) লিখুন:

docker exec [container-id or container-name] cat /etc/hosts
172.17.0.26 d8bc98fa4088
127.0.0.1   localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.17 mysql

উইন্ডোজ জন্য:

docker exec [container-id or container-name] ipconfig

1
বা কেবলdocker exec [container-name-or-id] ip a
স্টিফান রিখটার

উইন্ডোজের জন্যdocker exec [container-id or container-name] ipconfig
গ্রেটএন্ডপাওয়ারফুলফজ ওজ

27

ডকার সংস্করণ 1.10.3 হিসাবে, 20f81dd তৈরি করুন

আপনি ডকারকে অন্যথায় না বললে ডকার সর্বদা ব্রিজের নেটওয়ার্কে আপনার ধারকগুলি চালু করে। সুতরাং আপনি নীচে এই কমান্ড চেষ্টা করতে পারেন:

docker network inspect bridge

এরপরে একটি ধারক বিভাগটি ফেরত দেওয়া উচিত যা চলমান ধারকটির আইপি ঠিকানা প্রদর্শন করবে।

[
    {
        "Name": "bridge",
        "Id": "40561e7d29a08b2eb81fe7b02736f44da6c0daae54ca3486f75bfa81c83507a0",
        "Scope": "local",
        "Driver": "bridge",
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16"
                }
            ]
        },
        "Containers": {
            "025d191991083e21761eb5a56729f61d7c5612a520269e548d0136e084ecd32a": {
                "Name": "drunk_leavitt",
                "EndpointID": "9f6f630a1743bd9184f30b37795590f13d87299fe39c8969294c8a353a8c97b3",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        }
    }
]

আপনার পাত্রে বিভাগটি খালি থাকলে এর অর্থ কী? তবুও ধারক আপ এবং চলমান।
স্ট্যাকএড এড

24

এক্সিকিউট:

docker ps -a

এটি সক্রিয় ডকার চিত্রগুলি প্রদর্শন করবে:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS               NAMES
3b733ae18c1c        parzee/database     "/usr/lib/postgresql/"   6 minutes ago       Up 6 minutes                 5432/tcp            serene_babbage

কনটেনার আইডি মান ব্যবহার করুন:

docker inspect <CONTAINER ID> | grep -w "IPAddress" | awk '{ print $2 }' | head -n 1 | cut -d "," -f1

"172.17.0.2"


23

আমার পছন্দ হওয়া কয়েকটি উত্তরের ভিত্তিতে, আমি সমস্ত আইপি ঠিকানা এবং একটি নির্দিষ্ট ধারকটির জন্য অন্য একটি পেতে একটি ফাংশনে তাদের একত্রীকরণের সিদ্ধান্ত নিয়েছি। তারা এখন আমার .bashrcফাইলে আছে।

docker-ips() {
    docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
}

docker-ip() {
  docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$@"
}

প্রথম কমান্ডটি সমস্ত পাত্রে আইপি ঠিকানা এবং দ্বিতীয়টি একটি নির্দিষ্ট ধারকের আইপি ঠিকানা দেয়।

docker-ips
docker-ip YOUR_CONTAINER_ID

16

নাম অনুসারে কনটেইনার:

docker run ... --name pg-master

তারপরে আইপি ঠিকানার ঠিকানাটি নাম ধরে নিন:

MASTER_HOST=$(docker inspect --format '{{ .NetworkSettings.IPAddress }}' pg-master)

15

আমি নীচে চলমান সমস্ত ধারক থেকে আইপি ঠিকানার একটি টেবিল পেতে নিম্নলিখিত বাশ স্ক্রিপ্ট লিখেছিলাম docker-compose

function docker_container_names() {
    docker ps -a --format "{{.Names}}" | xargs
}

# Get the IP address of a particular container
dip() {
    local network
    network='YOUR-NETWORK-HERE'
    docker inspect --format "{{ .NetworkSettings.Networks.$network.IPAddress }}" "$@"
}

dipall() {
    for container_name in $(docker_container_names);
    do
        local container_ip=$(dip $container_name)
        if [[ -n "$container_ip" ]]; then
            echo $(dip $container_name) " $container_name"
        fi
    done | sort -t . -k 3,3n -k 4,4n
}

আপনার নিজের নেটওয়ার্কের নামে পরিবর্তনশীল নেটওয়ার্কটি পরিবর্তন করা উচিত।


1
এখান থেকে তুওং লে উত্তর stackoverflow.com/questions/17157721/… নেটওয়ার্ক ডিপ (): - ডকারে পরিদর্শন করুন - ফর্ম্যাট '{{রেঞ্জ। নেটওয়ার্কসেটেটিংস.নেটওয়ার্কস {} {{। আইপিএড্রেস}} {{শেষ the } '"$ @"
JoanComasFdz

1
@ জোয়ানকোমাস এফডিজ আপনি আমাকে অনেক ধন্যবাদ সংরক্ষণ করেছেন!
ছাগাই ফ্রাইডল্যান্ডার

14

এখানে দ্রুত কাজের উত্তর দেওয়া হল:

আপনার ধারকটির নাম বা আইডি পান:

docker container ls

তারপরে আইপি নিন:

docker inspect <container_ID Or container_name> |grep 'IPAddress'

বন্দরটি পান:

docker inspect <container_ID Or container_name> |grep 'Port'

13

ডকার গোতে লেখা এবং এটি কোয়েরি উদ্দেশ্যেও গো সিনট্যাক্স ব্যবহার করে।

কোনও নির্দিষ্ট ধারকের আইপি ঠিকানাটি পরীক্ষা করার জন্য আপনাকে কমান্ডটি চালাতে হবে ( -f"ফর্ম্যাট" এর জন্য):

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_id_or_name

ধারক আইডি বা নামের জন্য আপনি কমান্ডটি চালাতে পারেন

docker container ls

যা প্রতিটি চলমান ধারককে তালিকাভুক্ত করবে।


1
এটি খুব দরকারী। আমার নিজের গো কোয়েরিগুলি লেখার জন্য ডকুমেন্টেশন কোথায় পাব?
মাইকেল হফম্যান

12

আজ পাইথনে আমি docker inspect containerJSON আউটপুটটিকে ডেটা উত্স হিসাবে ব্যবহার করে একটি সমাধান প্রস্তুত করেছি ।

আমার কাছে প্রচুর কনটেইনার এবং অবকাঠামো রয়েছে যা আমাকে পরিদর্শন করতে হবে এবং দ্রুত এবং সুন্দর পদ্ধতিতে আমার যে কোনও ধারক থেকে বেসিক নেটওয়ার্কের তথ্য নেওয়া দরকার । এই জন্যই আমি এই স্ক্রিপ্টটি তৈরি করেছি।

গুরুত্বপূর্ণ: সংস্করণ ১.৯ থেকে, ডকার আপনাকে একাধিক নেটওয়ার্ক তৈরি করতে এবং সেগুলি পাত্রে সংযুক্ত করার অনুমতি দেয়।

#!/usr/bin/python

import json
import subprocess
import sys

try:
    CONTAINER = sys.argv[1]
except Exception as e:
    print "\n\tSpecify the container name, please."
    print "\t\tEx.:  script.py my_container\n"
    sys.exit(1)

# Inspecting container via Subprocess
proc = subprocess.Popen(["docker","inspect",CONTAINER],
                      stdout=subprocess.PIPE,
                      stderr=subprocess.STDOUT)

out = proc.stdout.read()
json_data = json.loads(out)[0]

net_dict = {}
for network in json_data["NetworkSettings"]["Networks"].keys():
    net_dict['mac_addr']  = json_data["NetworkSettings"]["Networks"][network]["MacAddress"]
    net_dict['ipv4_addr'] = json_data["NetworkSettings"]["Networks"][network]["IPAddress"]
    net_dict['ipv4_net']  = json_data["NetworkSettings"]["Networks"][network]["IPPrefixLen"]
    net_dict['ipv4_gtw']  = json_data["NetworkSettings"]["Networks"][network]["Gateway"]
    net_dict['ipv6_addr'] = json_data["NetworkSettings"]["Networks"][network]["GlobalIPv6Address"]
    net_dict['ipv6_net']  = json_data["NetworkSettings"]["Networks"][network]["GlobalIPv6PrefixLen"]
    net_dict['ipv6_gtw']  = json_data["NetworkSettings"]["Networks"][network]["IPv6Gateway"]
    for item in net_dict:
        if net_dict[item] == "" or net_dict[item] == 0:
            net_dict[item] = "null"
    print "\n[%s]" % network
    print "\n{}{:>13} {:>14}".format(net_dict['mac_addr'],"IP/NETWORK","GATEWAY")
    print "--------------------------------------------"
    print "IPv4 settings:{:>16}/{:<5}  {}".format(net_dict['ipv4_addr'],net_dict['ipv4_net'],net_dict['ipv4_gtw'])
    print "IPv6 settings:{:>16}/{:<5}  {}".format(net_dict['ipv6_addr'],net_dict['ipv6_net'],net_dict['ipv6_gtw'])

আউটপুটটি হ'ল:

$ python docker_netinfo.py debian1

[frontend]

02:42:ac:12:00:02   IP/NETWORK        GATEWAY
--------------------------------------------
IPv4 settings:      172.18.0.2/16     172.18.0.1
IPv6 settings:            null/null   null

[backend]

02:42:ac:13:00:02   IP/NETWORK        GATEWAY
--------------------------------------------
IPv4 settings:      172.19.0.2/16     172.19.0.1
IPv6 settings:            null/null   null

দয়া করে, স্ক্রিপ্টে পাইথন 2.7 এ পরিবর্তন করুন, পাইথন 3 এখন সাধারণ ব্যবহারে আছে বা দুটি সংস্করণ লিখুন
42n4

আমি আমার গিস্ট আপডেট করব এবং যত তাড়াতাড়ি আমার কাছে আসবে, আমি এখানে পোস্ট করব। প্রকৃতপক্ষে, এই মোড়কটি পাইথন ২.7 এর জন্য ডিজাইন করা হয়েছিল। সাহায্য করার জন্য ধন্যবাদ!
ivanleoncz

9
docker inspect --format '{{ .NetworkSettings.IPAddress }}' <containername or containerID here>

উপরের কাজগুলি যদি কনটেইনারটি ডিফল্ট ব্রিজ নেটওয়ার্কে স্থাপন করা হয়।

তবে, যদি কাস্টম ব্রিজ নেটওয়ার্ক বা ওভারলে নেটওয়ার্ক ব্যবহার করা হয়, তবে আরও ভাল কাজ করতে আমি নীচেরটি পেয়েছি:

docker exec <containername or containerID here> /sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'

9

কো-ডসের উত্তর প্রসারিত করতে, সমস্ত ধারকের নাম এবং তাদের আইপি ঠিকানাগুলি তালিকাবদ্ধ করার জন্য এখানে একটি উপাধি রয়েছে:

alias docker-ips='docker ps | tail -n +2 | while read -a a; do name=${a[$((${#a[@]}-1))]}; echo -ne "$name\t"; docker inspect $name | grep IPAddress | cut -d \" -f 4; done'

1
ব্যবহার - যে বেশ একটু সরলীকৃত যাবে docker ps -qএড়াতে tail, এবং --format, grep এড়ানো। এছাড়াও আপনি docker inspectশেল লুপের পরিবর্তে একাধিক ধারক আইডি পাস করতে পারেন ।
ব্রায়ান

1
docker ps -qকেবলমাত্র ধারকগুলির সংখ্যাসূচক আইডি প্রদর্শন করে তবে আমি মনে করি যে তাদের নাম ব্যবহার করা আরও ভাল। tailএটি কেবল প্রথম লাইন (টেবিল শিরোনাম) থেকে মুক্তি পাওয়ার জন্য এবং এখনও প্রয়োজন। আমি ব্যবহার করতে পারে --formatযদিও: docker ps | tail -n +2 | while read -a a; do name=${a[$((${#a[@]}-1))]}; echo -ne "$name\t"; docker inspect --format="{{.NetworkSettings.IPAddress}}" $name | cut -d \" -f 4; done। তবে এটি কোনও বড় উন্নতির মতো বলে মনে হচ্ছে না ... এটি grepছিল আরও পাঠযোগ্য আইএমও।
মার্কো রায়

1
সামান্য পরিবর্তিত সংস্করণ যা ধারক নামটির সাথে এক লাইনে প্রথমে আইপি তালিকাভুক্ত করে: ডকার পিএস | লেজ -n +2 | পড়ার সময় -aa; do name = $ {a [$ (($ {# এ [@]} - 1))]}; ডকার পরিদর্শন $ নাম | গ্রেপ "আইপিএড্রেস। * [0-9] \ +" | কাটা -d \ "-f 4 | TR" \ N "" "; প্রতিধ্বনি -e" \ T $ {নাম} "; সম্পন্ন
গিলিয়দের

এর সাথে শেষ হয়েছে:docker inspect $cid | grep IPAddress | cut -d '"' -f 4 | tail -n 1
অ্যাঙ্গোজারভা

9

আমি এই সহজ উপায় ব্যবহার

docker exec -it <container id or name> hostname -i

যেমন

ubuntu@myhost:~$ docker exec -it 3d618ac670fe hostname -i
10.0.1.5

7

যদি আপনি ডকার টুলবক্স ব্যবহার করে ডকার ইনস্টল করেন তবে আপনি ধারক আইপি ঠিকানা পেতে কাইটেম্যাটিক অ্যাপ্লিকেশনটি ব্যবহার করতে পারেন:

  1. ধারকটি নির্বাচন করুন
  2. সেটিংস এ ক্লিক করুন
  3. পোর্ট ট্যাবে ক্লিক করুন।

আমার জন্য, আইপি ঠিকানাটি "হোস্টনেম / পোর্ট" ট্যাবে ছিল, তবে এটি তবুও একটি সহায়ক সহায়ক ছিল! মনে রাখবেন যে docker inspectআপনি ডকার টুলবক্স চালানোর সময় কার্যকর হয় না। এটি একটি আইপি ঠিকানার প্রতিবেদন করবে, তবে এটি আপনার পরিষেবাগুলি ব্যবহার করবে এমন সঠিক ঠিকানা নয়।
গুরান রোজেন

7

কোনও ধারকের আইপি ঠিকানা এবং হোস্ট পোর্ট পেতে:

docker inspect containerId | awk '/IPAddress/ || /HostPort/'

আউটপুট:

    "HostPort": "4200"
                    "HostPort": "4200"
        "SecondaryIPAddresses": null,
        "IPAddress": "172.17.0.2",
                "IPAddress": "172.17.0.2",

7

বিঃদ্রঃ!!! ডকার রচনা ব্যবহারের জন্য:

যেহেতু ডকার কম্পোজ প্রতিটি ক্লাস্টারের জন্য একটি বিচ্ছিন্ন নেটওয়ার্ক তৈরি করে, নীচের পদ্ধতিগুলি কাজ করে না docker-compose


সর্বাধিক মার্জিত এবং সহজ উপায় শেল ফাংশনটি সংজ্ঞায়িত করা হচ্ছে, বর্তমানে সর্বাধিক ভোট প্রাপ্ত উত্তর @ ওয়াউটারডি এর :

dockip() {
  docker inspect --format '{{ .NetworkSettings.IPAddress }}' "$@"
}

ডকার লিনাক্স প্রোগ্রামের মতো কোনও ফাইলে ধারক আইডি লিখতে পারে:

সাথে চলমান --cidfile=filename, ডকার কনটেইনারটির আইডিটি "ফাইলের নাম" থেকে ফেলে দেয়।

আরও তথ্যের জন্য " ডকার পিআইডি সমতুল্য বিভাগ চালায় " দেখুন ।

--cidfile="app.cid": Write the container ID to the file

একটি পিআইডি ফাইল ব্যবহার করা:

  1. --cidfileপ্যারামিটার সহ ধারক চালানো , app.cidফাইলের সামগ্রীটি হ'ল:

    a29ac3b9f8aebf66a1ba5989186bd620ea66f1740e9fe6524351e7ace139b909
    
  2. আপনি ডকার পাত্রে পরিদর্শন করতে ফাইল সামগ্রী ব্যবহার করতে পারেন:

    blog-v4 git:(develop) ✗ docker inspect `cat app.cid`
    
  3. আপনি একটি ইনলাইন পাইথন স্ক্রিপ্ট ব্যবহার করে ধারক আইপি বের করতে পারেন:

    $ docker inspect `cat app.cid` | python -c "import json;import sys;\
    sys.stdout.write(json.load(sys.stdin)[0]['NetworkSettings']['IPAddress'])"
    172.17.0.2
    

এখানে একটি আরও মানব বান্ধব ফর্ম:

#!/usr/bin/env python
# Coding: utf-8
# Save this file like get-docker-ip.py in a folder that in $PATH
# Run it with
# $ docker inspect <CONTAINER ID> | get-docker-ip.py

import json
import sys

sys.stdout.write(json.load(sys.stdin)[0]['NetworkSettings']['IPAddress'])

আরও তথ্যের জন্য " ডকারের ধারক আইপি ঠিকানাগুলি পাওয়ার 10 বিকল্প " দেখুন ।



5

এটি হোস্টের সমস্ত ধারক আইপি তালিকাভুক্ত করবে:

sudo docker ps -aq | while read line;  do sudo docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $line ; done

5

ডকার সমস্ত ধারক আইপি এবং তার সম্পর্কিত নামগুলি মুদ্রণের জন্য ব্যবহারটি পরীক্ষা করে

docker ps -q | xargs -n 1 docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}} {{ .Name }}' | sed 's/ \// /'

5

কেবল সম্পূর্ণতার জন্য:

আমি --formatবিকল্পটি পছন্দ করি তবে প্রথমে আমি এটি সম্পর্কে অবগত ছিলাম না তাই একই ফলাফল পেতে আমি একটি সাধারণ পাইথন ওয়ান-লাইনার ব্যবহার করেছি:

docker inspect <CONTAINER> |python -c 'import json,sys;obj=json.load(sys.stdin);print obj[0]["NetworkSettings"]["IPAddress"]'

এটি দুর্দান্ত উত্তর। - এছাড়াও অন্য উত্তর দেখুন stackoverflow.com/a/36306632/432903
prayagupd

5

ডকার চিত্রের নামের ভিত্তিতে ধারক আইডি সন্ধানের সাথে পূর্ববর্তী উত্তরগুলির সংমিশ্রণ:

docker inspect --format '{{ .NetworkSettings.IPAddress }}' `docker ps | grep $IMAGE_NAME | sed 's/\|/ /' | awk '{print $1}'`


4

জন্য উইন্ডোজ পাত্রে ব্যবহার

docker exec <container> ipconfig

যেখানে <container>হয় নাম বা আইডি ধারক করুন।

আপনি docker psধারকটির আইডি খুঁজতে ব্যবহার করতে পারেন ।


"Mrm" ব্যবহার করতে ভুলবেন না অন্যথায় এটি আস্তে আস্তে স্তরবিহীন স্তর সহ হার্ড ড্রাইভের জায়গাটি খেয়ে ফেলবে। প্রায় সব ক্ষেত্রেই "রান" এর সাথে "আর্ম" জোড়া দেওয়া ভাল।
কনটাঙ্গো

@ কনটাঙ্গো: 'ডকার এক্সিকিউট' ইতিমধ্যে চলমান ধারকটিতে একটি কমান্ড কার্যকর করে। এটিতে --rm সুইচ নেই। docs.docker.com/engine/references/commandline/exec
কিরোড

4

আপনি যদি ধারক আইডি ভুলে গেছেন বা শেল কমান্ডগুলি নিয়ে কারসাজি করতে না চান, পোর্টেনারের মতো ইউআই ব্যবহার করা ভাল।

https://portainer.io/

$ docker volume create portainer_data
$ docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

আপনি ধারক এছাড়াও আইপি সম্পর্কে সমস্ত তথ্য পেতে পারেন।


4
এই লিঙ্কটি যদি প্রশ্নের উত্তর দিতে পারে তবে লিঙ্কটি কেবল উত্তরগুলি স্ট্যাক ওভারফ্লোতে নিরুৎসাহিত করা হয়, আপনি লিঙ্কটির গুরুত্বপূর্ণ অংশগুলি গ্রহণ করে এবং আপনার উত্তরে রেখে এই উত্তরটি উন্নত করতে পারেন, এটি নিশ্চিত করে তোলে যদি লিঙ্কটি পরিবর্তন হয়ে যায় তবে আপনার উত্তরটি এখনও একটি উত্তর বা সরানো হয়েছে :)
হোয়াটপয়েন্টে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.