আমি কীভাবে একটি এলএক্সসি পাত্রে আইপি ঠিকানা পেতে পারি?


19

আমি এলএক্সসি পাত্রে পরিচালনার জন্য কয়েকটি স্ক্রিপ্ট লিখেছি এবং আমি আইফোনফিগের মাধ্যমে তাদের আইপি ঠিকানাগুলি পেতে পারি, ধরে নিই যে আমি কনসোলের সাথে সংযুক্ত রয়েছি।

আমি এখন ssh এর মাধ্যমে এই ধারকগুলির সাথে সংযোগ স্থাপন করতে চাই। আমি কীভাবে তাদের আইপি ঠিকানাটি পাব যাতে আমি স্ক্রিপ্ট লিখতে পারি? আমি ঠিকানাগুলি নিজেও সেট করতে চাই না (তবে আমি এটি করব, যদি এটিই একমাত্র বিকল্প)।

এখনও অবধি চেষ্টা করেছি lxc-start, তবে চালানোর আগে যন্ত্রটির আইপি ঠিকানা নেই /sbin/init


এই বাগ-প্রতিবেদনের সাথে সম্পর্কিত একই সমস্যা, bugs.launchpad.net/ubuntu/+source/lxc/+bug/1389954 যা উবুন্টু 16.04 সার্ভার এডিশনে এটি কাজ করে না সে সম্পর্কে সংক্ষিপ্ত তথ্য রয়েছে তবে ডেস্কটপগুলিতে ঠিক আছে যেখানে dnsmasq রয়েছে নেটওয়ার্কম্যানেজার দ্বারা লাথি মেরেছে (যেমন পরামর্শ দেওয়া হয়েছে; Askubuntu.com/a/545265/599087 'বন দ্বারা') osdir.com/ml/ubuntu-bugs/2016-10/msg05441.html
ওপেনটিক্স

উত্তর:


10

এটি করার এখন সবচেয়ে সহজ উপায় হ'ল:

lxc-info -n container-name -iH

এটি অন্য কোনও পাঠ্য না দিয়ে আইপি ঠিকানা প্রদান করে।

-iবিকল্প নির্দিষ্ট করে আইপি ঠিকানা ফেরত পাঠানো উচিত এবং -Hবিকল্প অক্ষম মানুষের পাঠযোগ্য আউটপুট অর্থাত লেবেলগুলি। আরও তথ্যের জন্য lxc-info man পৃষ্ঠাটি দেখুন

এলএক্সসির নতুন সংস্করণের জন্য সম্পাদনা:

lxc info container-name

তারপরে আপনি বিশদ তথ্য পাবেন। "আইপস:" ব্লকটি দেখুন, যা নীচের মত দেখতে হবে। 10.121.48.241এই ক্ষেত্রে আপনি প্রথম আইপিভি 4 ঠিকানা দখল করতে পারেন :

Ips:
  eth0: inet    10.121.48.241   vethSBP4RR
  eth0: inet6   fda5:b9a9:f3b9:ba32:216:3eff:fe4a:4d7d  vethSBP4RR
  eth0: inet6   fe80::216:3eff:fe4a:4d7d    vethSBP4RR
  lo:   inet    127.0.0.1
  lo:   inet6   ::1

এলএক্সডি এবং অপ্রয়োজনীয় ধারকগুলির সাথে কাজ করা, এই আদেশটি ব্যবহারের নয়। এলএক্সডি 2017 সালে প্রচারিত ডিফল্ট অপ্রচলিত ধারকগুলির সাথে আপনি কীভাবে এই তথ্য পাবেন?
jgomo3

10

কনটেইনারগুলিতে চলমান জিনিসগুলি উবুন্টুতে সমর্থিত বলে মনে হচ্ছে না, আমার পরবর্তী সেরা পরামর্শটি হ'ল যে আইপি ঠিকানা ইজারা দিচ্ছে তা সন্ধান করা dnsmasq। এটি সত্যই সহজ:

$ cat /var/lib/misc/dnsmasq.leases
1363699477 00:16:3e:4a:ce:a4 10.0.3.83 containername *

এখানে কেবল দুটি অংশই রয়েছে যা কোনও কাজে আসে, তাই আমরা এটিকে আরও ভাল করে ফর্ম্যাট করতে পারি:

$ awk '{ print $4,$3 }' /var/lib/misc/dnsmasq.leases | column -t
containername  10.0.3.83

এটি পুরোপুরি কাজ করে!
স্টেফানো প্যালাজো

2
রেফারেন্সের জন্য: এলএক্সসির নতুন সংস্করণ (যেমন রেয়ারিংয়ের মধ্যে একটি) এর আউটপুটে আইপি ঠিকানাটি দেখায় lxc-ls --fancy
স্টেফানো মধ্যে Palazzo

এফওয়াইআই, উবুন্টুতে এই আইপি ইজারা রেকর্ডের ফাইলের নামটিতে এলএক্সসি ব্রিজের নাম রয়েছে যেমনdnsmasq.lxcbr0.leases
ফ্লিন্ট

7

প্রযুক্তিগতভাবে বলতে গেলে আপনার lxc-attachকমান্ড (এবং আউটপুট প্রক্রিয়াজাতকরণ) এর সাথে সংযোগ স্থাপন এবং ফায়ার করতে সক্ষম হওয়া উচিত :

sudo lxc-attach --name containername -- ifconfig

এর জন্য ধারকটি চলমান হওয়া দরকার।

দ্রষ্টব্য: আমি এটি কাজ করতে পারিনি। আমি এলএক্সসি ইনস্টল করেছি এবং এটি চেষ্টা করেছি কিন্তু কেবলমাত্র নেমস্পেসের ত্রুটিগুলি, ফাইলগুলি এবং অন্যান্য আজেবাজে কথাগুলি দেখেছি। তবে এলএক্সসির সাথে আমার একমাত্র অভিজ্ঞতা হ'ল আমি এই প্রশ্নের জন্য 10 মিনিট ব্যয় করেছি। এটি কাজ করতে পারে। এটা নাও পারে। শুভকামনা!


এবং অবশ্যই, ifconfig eth0 | grep -Eo 'addr:[0-9.]+' | cut -d: -f2যদি আপনি কেবল আইপি ঠিকানা চান তবে এটিকে আপগ্রেড করুন ।
অলি

দুর্ভাগ্যক্রমে আমি একই ধরণের ত্রুটি পাচ্ছি। No such file or directory - failed to open '/proc/28741/ns/pid'এবং failed to enter the namespace। আমি দেখেছি একটি বাগ যে অবিকল সমস্যা বর্ণনা করে, কিন্তু এটি 2010 থেকে
স্টেফানো মধ্যে Palazzo

আমাকে ইফকনফিগের পুরো পথটি ব্যবহার করতে হয়েছিল: lxc -लग्न -n ধারক / এসবিন / ifconfig
এপেলি

হিসাবে help.ubuntu.com/12.04/serverguide/lxc.html বলেছেন, lxc- সংযুক্ত সমর্থিত নয়।
সিয়াসটেক

5

এটি উবুন্টু 14.04 এ কাজ করে:

lxc-info -n $name -i

এবং যদি আপনি কেবল আইপি ঠিকানা চান (স্ক্রিপ্টগুলির জন্য দরকারী), (ধন্যবাদ জুলিয়ানএইচএলএম):

lxc-info -n $name -iH

যদি কোনও স্ক্রিপ্টের মাধ্যমে কল করা হয়, আপনি এমনকি lxc-info -n $name -Hiএক্সটার্নিয়াস হোয়াইটস্পেস ছাড়াই কেবল আইপি পেতে পারেন
জুলিয়ান এইচ লাম


2

এটি করার জন্য পাইথন সংস্করণ:

#!/usr/bin/python
from pylxd import Client

client = Client(endpoint='https://10.185.96.208:8443', verify=False,    cert=('.config/lxc/client.crt', '.config/lxc/client.key'))

myCtr = client.containers.get('YOUR_CTR_NAME')
addresses = myCtr.state().network['eth0']['addresses']
for a in addresses:
   if(a['scope'] == 'global'):
      print "Found IP [%s]" %(a['address'])
      break

1

নীচের কমান্ডটি lxc-attachআগের পোস্টে উদাহরণকে প্রতিস্থাপন করে

sudo lxc-execute --name containername --rcfile /usr/share/doc/lxc/examples/lxc-macvlan.conf /sbin/ifconfig

এটি ধারকটির ifconfigভিতরে চলে এবং আউটপুট দেখায়।

The --rcfile argument might not be required. Without it the command failed with 

lxc-execute: No such file or directory - failed to exec /usr/lib/lxc/lxc-init 

lxc-execute: invalid sequence number 1. expected 2

দেখে মনে হচ্ছে কিছু সঠিকভাবে কনফিগার করা হয়নি। কার্যকারণ হিসাবে আমি LXC ডকুমেন্টেশন দ্বারা সরবরাহিত পূর্বনির্ধারিত কনফিগারেশন টেম্পলেটটি আরও তদন্ত ছাড়াই কাজ করার জন্য ব্যবহার করেছি।


1

আপনি যদি LXD চালাচ্ছেন তবে চলমান ধারকটির আইপি ঠিকানা পাওয়ার জন্য আপনি এই কমান্ডটি দরকারী খুঁজে পেতে পারেন

lxc exec <container-name> -- ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1


0

আপনার জন্য dnsmasq এটি করতে দিন।

.Lxc শীর্ষ-স্তরের ডোমেনের জন্য lxc এর dnsmasq উদাহরণটি অনুসন্ধান করতে আপনার হোস্ট মেশিনের dnsmasq উদাহরণটি কনফিগার করুন।

ইন / ইত্যাদি / ডিফল্ট / এলএক্সসি-নেট, এই লাইনটি আপত্তিহীন করুন:

LXC_DOMAIN="lxc"

যদি আপনার হোস্টের ডিএনএসএএসসি ইনস্ট্যান্সটি নেটওয়ার্ক ম্যানেজার দ্বারা চালু করা হয় (যেমন বর্তমান বেশিরভাগ উবুন্টু ডেস্কটপ ইনস্টলসের ক্ষেত্রে হয়) এই লাইনের ভিতরে /etc/NetworkManager/dnsmasq.d/lxc.conf নামে একটি ফাইল তৈরি করুন:

server=/lxc/10.0.3.1

যদি আপনার হোস্টের ড্যানমাস্ক নেটওয়ার্ক নেটওয়ার্কের ব্যতীত অন্য কোনও দ্বারা চালু করা হয়, পরিবর্তে /etc/dnsmasq.d- উপলভ্য /lxc এ লাইনটি যুক্ত করুন:

server=/lxc/10.0.3.1

তারপরে জিনিসগুলি পুনরায় চালু করুন যাতে তারা পরিবর্তনগুলি গ্রহণ করে:

service lxc-net stop
service lxc-net start
service network-manager restart

ডিএনএসে উপস্থিত হওয়ার আগে আপনাকে আপনার lxc পাত্রে পুনরায় চালু করতে হবে বা তাদের নতুন ডিএইচসিপি ইজারা দেওয়ার জন্য অনুরোধ করতে হবে। (আমি এটি করার সময় এটি প্রয়োজনীয় ছিল কিনা তা আমি মনে করি না।) এটি উল্লেখ করার মতো বিষয়ও যে আমি lxc- নেট সম্পর্কে একটি বাগ রিপোর্টটি পুনরায় চালু করার সময় ডানমাস্ক পরিবর্তনগুলি গ্রহণ না করার বিষয়ে দেখেছিলাম, সুতরাং আপনি আপনার হোস্ট সিস্টেমটি কেবল পুনরায় চালু করতে চাইতে পারেন নিশ্চিত হতে হবে.

তারপরে চেষ্টা করুন:

$ host mycontainer.lxc
mycontainer.lxc has address 10.0.3.21

$ ssh ubuntu@mycontainer.lxc
Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-39-generic x86_64)
ubuntu@mycontainer:~$

0

সহজ উত্তর

sudo lxc-ls -f | grep "container_name"

আপনি যদি ধারকটির নাম মনে না রাখেন তবে কেবল sudo lxc-ls -f টাইপ করুন।

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