কীভাবে RHEL/CentOS 7 এ LXC (লিনাক্স কনটেইনারগুলি) ইনস্টল করবেন, পরিচালনা করবেন এবং পরিচালনা করবেন


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

এলএক্সসি এবং কেভিএম ভার্চুয়ালাইজেশনের মধ্যে পার্থক্য হ'ল এলএক্সসি হার্ডওয়্যারকে এমুলেট করে না, তবে ক্রট অ্যাপ্লিকেশনগুলির মতো একই কার্নেল নেমস্পেস ভাগ করে।

এটি ভিএমওয়্যারের মতো অন্যান্য ভার্চুয়ালাইজেশন সমাধানগুলির তুলনায় এলএক্সসিকে একটি খুব দ্রুত ভার্চুয়ালাইজেশন সমাধান করে তোলে।

এই নিবন্ধটি আপনাকে কিভাবে সেন্টস/আরএইচইএল এবং ফেডোরার বিতরণে এলএক্সসি পাত্রে ইনস্টল করতে, মোতায়েন করতে এবং চালাতে পারে সে সম্পর্কে আপনাকে গাইড করবে।

সর্বনিম্ন ইনস্টলেশন সহ একটি ওয়ার্কিং লিনাক্স অপারেটিং সিস্টেম:

  1. CentOS 7 লিনাক্সের ইনস্টলেশন
  2. আরএইচএল 7
  3. এর ইনস্টলেশন
  4. ফেডোরা 23 সার্ভারের ইনস্টলেশন

পদক্ষেপ 1: লিনাক্সে এলএক্সসি ভার্চুয়ালাইজেশন ইনস্টল করা

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

# yum install epel-release

২. এলএক্সসি ইনস্টলেশন প্রক্রিয়া চালিয়ে যাওয়ার আগে, নিশ্চিত করুন যে পার্ল ভাষার দোভাষী এবং ডিবুটস্ট্র্যাপ প্যাকেজগুলি নীচের আদেশগুলি জারি করে ইনস্টল করা আছে।

# yum install debootstrap perl libvirt

৩. অবশেষে নিম্নলিখিত কমান্ডের সাহায্যে এলএক্সসি ভার্চুয়ালাইজেশন সমাধান ইনস্টল করুন।

# yum install lxc lxc-templates

৪. এলএক্সসি পরিষেবা ইনস্টল হওয়ার পরে, LXC এবং libvirt ডিমন চলছে কিনা তা যাচাই করুন।

# systemctl status lxc.service
# systemctl start lxc.service
# systemctl start libvirtd 
# systemctl status lxc.service
 systemctl status lxc.service
lxc.service - LXC Container Initialization and Autoboot Code
   Loaded: loaded (/usr/lib/systemd/system/lxc.service; disabled)
   Active: inactive (dead)

 systemctl start lxc.service
 systemctl status lxc.service
lxc.service - LXC Container Initialization and Autoboot Code
   Loaded: loaded (/usr/lib/systemd/system/lxc.service; disabled)
   Active: active (exited) since Fri 2016-04-01 02:33:36 EDT; 1min 37s ago
  Process: 2250 ExecStart=/usr/libexec/lxc/lxc-autostart-helper start (code=exited, status=0/SUCCESS)
  Process: 2244 ExecStartPre=/usr/libexec/lxc/lxc-devsetup (code=exited, status=0/SUCCESS)
 Main PID: 2250 (code=exited, status=0/SUCCESS)

Apr 01 02:33:06 mail systemd[1]: Starting LXC Container Initialization and Autoboot Code...
Apr 01 02:33:06 mail lxc-devsetup[2244]: Creating /dev/.lxc
Apr 01 02:33:06 mail lxc-devsetup[2244]: /dev is devtmpfs
Apr 01 02:33:06 mail lxc-devsetup[2244]: Creating /dev/.lxc/user
Apr 01 02:33:36 mail lxc-autostart-helper[2250]: Starting LXC autoboot containers:  [  OK  ]
Apr 01 02:33:36 mail systemd[1]: Started LXC Container Initialization and Autoboot Code.

এবং নীচের কমান্ড জারি করে LXC কার্নেল ভার্চুয়ালাইজেশন স্থিতি পরীক্ষা করুন।

# lxc-checkconfig
 lxc-checkconfig
Kernel configuration not found at /proc/config.gz; searching...
Kernel configuration found at /boot/config-3.10.0-229.el7.x86_64
--- Namespaces ---
Namespaces: enabled
Utsname namespace: enabled
Ipc namespace: enabled
Pid namespace: enabled
User namespace: enabled
Network namespace: enabled
Multiple /dev/pts instances: enabled

--- Control groups ---
Cgroup: enabled
Cgroup clone_children flag: enabled
Cgroup device: enabled
Cgroup sched: enabled
Cgroup cpu account: enabled
Cgroup memory controller: enabled
Cgroup cpuset: enabled

--- Misc ---
Veth pair device: enabled
Macvlan: enabled
Vlan: enabled
Bridges: enabled
Advanced netfilter: enabled
CONFIG_NF_NAT_IPV4: enabled
CONFIG_NF_NAT_IPV6: enabled
CONFIG_IP_NF_TARGET_MASQUERADE: enabled
CONFIG_IP6_NF_TARGET_MASQUERADE: enabled
CONFIG_NETFILTER_XT_TARGET_CHECKSUM: enabled

--- Checkpoint/Restore ---
checkpoint restore: missing
CONFIG_FHANDLE: enabled
CONFIG_EVENTFD: enabled
CONFIG_EPOLL: enabled
CONFIG_UNIX_DIAG: enabled
CONFIG_INET_DIAG: enabled
CONFIG_PACKET_DIAG: enabled
CONFIG_NETLINK_DIAG: enabled
File capabilities: enabled

Note : Before booting a new kernel, you can check its configuration
usage : CONFIG=/path/to/config /usr/bin/lxc-checkconfig

পদক্ষেপ 2: লিনাক্সে এলএক্সসি কনটেইনারগুলি তৈরি এবং পরিচালনা করুন

৫. আপনার সিস্টেমে ইতিমধ্যে ইনস্টল হওয়া উপলব্ধ এলএক্সসি টেম্পলেটগুলির পাতাগুলির তালিকা তৈরি করতে নীচের কমান্ডটি জারি করুন।

# ls -alh /usr/share/lxc/templates/
total 344K
drwxr-xr-x. 2 root root 4.0K Apr  1 02:32 .
drwxr-xr-x. 6 root root  100 Apr  1 02:32 ..
-rwxr-xr-x. 1 root root  11K Nov 15 10:19 lxc-alpine
-rwxr-xr-x. 1 root root  14K Nov 15 10:19 lxc-altlinux
-rwxr-xr-x. 1 root root  11K Nov 15 10:19 lxc-archlinux
-rwxr-xr-x. 1 root root 9.7K Nov 15 10:19 lxc-busybox
-rwxr-xr-x. 1 root root  29K Nov 15 10:19 lxc-centos
-rwxr-xr-x. 1 root root  11K Nov 15 10:19 lxc-cirros
-rwxr-xr-x. 1 root root  17K Nov 15 10:19 lxc-debian
-rwxr-xr-x. 1 root root  18K Nov 15 10:19 lxc-download
-rwxr-xr-x. 1 root root  49K Nov 15 10:19 lxc-fedora
-rwxr-xr-x. 1 root root  28K Nov 15 10:19 lxc-gentoo
-rwxr-xr-x. 1 root root  14K Nov 15 10:19 lxc-openmandriva
-rwxr-xr-x. 1 root root  14K Nov 15 10:19 lxc-opensuse
-rwxr-xr-x. 1 root root  35K Nov 15 10:19 lxc-oracle
-rwxr-xr-x. 1 root root  12K Nov 15 10:19 lxc-plamo
-rwxr-xr-x. 1 root root 6.7K Nov 15 10:19 lxc-sshd
-rwxr-xr-x. 1 root root  23K Nov 15 10:19 lxc-ubuntu
-rwxr-xr-x. 1 root root  12K Nov 15 10:19 lxc-ubuntu-cloud

A. এলএক্সসি পাত্রে তৈরি করার প্রক্রিয়াটি খুব সহজ। একটি নতুন ধারক তৈরি করতে কমান্ড সিনট্যাক্সটি নীচে ব্যাখ্যা করা হয়েছে।

# lxc-create -n container_name -t container_template

নীচের অংশে আমরা ডেবিয়ান টেমপ্লেটের উপর ভিত্তি করে মাইদেব নামে একটি নতুন ধারক তৈরি করব যা এলএক্সসি সংগ্রহস্থল থেকে সরিয়ে নেওয়া হবে।

 lxc-create -n mydcb -t debian
debootstrap is /usr/sbin/debootstrap
Checking cache download in /var/cache/lxc/debian/rootfs-jessie-amd64 ... 
Downloading debian minimal ...
W: Cannot check Release signature; keyring file not available /usr/share/keyrings/debian-archive-keyring.gpg
I: Retrieving Release 
I: Retrieving Packages 
I: Validating Packages 
I: Resolving dependencies of required packages...
I: Resolving dependencies of base packages...
...
...

Base. আপনার সিস্টেমে ডাউনলোড এবং ইনস্টল করা হবে এমন কয়েকটি বেস নির্ভরতা এবং প্যাকেজগুলির পরে ধারক তৈরি করা হবে। প্রক্রিয়া শেষ হয়ে গেলে কোনও বার্তা আপনার ডিফল্ট রুট অ্যাকাউন্টের পাসওয়ার্ড প্রদর্শন করবে। সুরক্ষিত হওয়ার জন্য একবার এই পাসওয়ার্ডটি পরিবর্তন করুন এবং ধারক কনসোলে লগইন করুন।

are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Failed to read /proc/cmdline. Ignoring: No such file or directory
invoke-rc.d: policy-rc.d denied execution of start.
Timezone in container is not configured. Adjust it manually.
Root password is 'root', please change !
Generating locales (this might take a while)...
  en_IN.en_IN...character map file `en_IN' not found: No such file or directory
/usr/share/i18n/locales/en_IN:55: LC_MONETARY: unknown character in field `currency_symbol'
 done
Generation complete.

৮. এখন, আপনি চলমান/থামানো ধারক সম্পর্কে তথ্য পেতে আপনার পাত্রে এবং lxc-info তালিকাভুক্ত করতে lxc-ls ব্যবহার করতে পারেন।

ব্যাকগ্রাউন্ডে সদ্য নির্মিত কনটেইনারটি শুরু করার জন্য ( -ড বিকল্পটি উল্লেখ করে ডেমন হিসাবে চলবে) নিম্নলিখিত কমান্ডটি জারি করুন:

# lxc-start -n mydeb -d

9. কনটেইনারটি শুরু করার পরে আপনি lxc-ls --active কমান্ডটি ব্যবহার করে চলমান পাত্রে তালিকাভুক্ত করতে পারেন এবং চলমান ধারক সম্পর্কে বিস্তারিত তথ্য পেতে পারেন।

# lxc-ls --active

১০. কনটেইনার কনসোলটিতে লগইন করার জন্য চলমান ধারক নামের বিরুদ্ধে lxc-console কমান্ডটি ইস্যু করুন। ব্যবহারকারী রুট এবং পাসওয়ার্ডের সাথে লগইন করুন ডিফল্টরূপে উত্পাদিত এলএক্সসি সুপারভাইজারের মাধ্যমে।

একবার কনটেইনারটিতে লগইন হয়ে গেলে আপনি /etc/issue.net ফাইলের সামগ্রী প্রদর্শন করে বিতরণ যাচাই করতে কয়েকটি কমান্ড চালাতে পারেন, passwd কমান্ড জারি করে রুট পাসওয়ার্ড পরিবর্তন করুন অথবা ifconfig এর সাথে নেটওয়ার্ক ইন্টারফেস সম্পর্কে বিশদ দেখুন।

# lxc-console -n mydeb
# cat /etc/issue.net
# ifconfig
# passwd
 lxc-console -n mydcb

Connected to tty 1
Type &ltCtrl+a q> to exit the console, <Ctrl+a Ctrl+a> to enter Ctrl+a itself

Debian GNU/Linux 8 mydcb tty1

mydcb login: root
Password: 
Last login: Fri Apr  1 07:39:08 UTC 2016 on console
Linux mydcb 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42 UTC 2015 x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
[email :~# cat /etc/issue.net
Debian GNU/Linux 8
[email :~# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:16:3e:d9:21:d7  
          inet6 addr: fe80::216:3eff:fed9:21d7/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:107 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:5796 (5.6 KiB)  TX bytes:648 (648.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

[email :~# passwd root
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

১১. কনটেইনার কনসোল থেকে বিচ্ছিন্ন হয়ে আপনার হোস্ট কনসোলটিতে ফিরে যেতে, ধারকটিকে সক্রিয় অবস্থায় রেখে, কীবোর্ডের Ctrl + a তারপর q চাপুন।

চলমান ধারকটি বন্ধ করতে নিম্নলিখিত কমান্ডটি ইস্যু করুন।

# lxc-stop -n mydcb

12. কোনও উবুন্টু টেমপ্লেটের উপর ভিত্তি করে একটি এলএক্সসি ধারক তৈরি করতে /usr/sbin/ ডিরেক্টরিটি প্রবেশ করুন এবং নীচের ডিবাটস্ট্র্যাপ সিমিলিংক তৈরি করুন।

# cd /usr/sbin
# ln -s debootstrap qemu-debootstrap

১৩. ভিআই সম্পাদকের সাথে কিউমু-ডিবুটস্ট্র্যাপ ফাইলটি সম্পাদনা করুন এবং নিম্নলিখিত দুটি মিরর লাইন প্রতিস্থাপন করুন:

DEF_MIRROR=”http://mirrors.kernel.org/ubuntu”
DEF_HTTPS_MIRROR=”https://mirrors.kernel.org/ubuntu”

রেফারেন্সের জন্য, নিম্নলিখিত সামগ্রীটি দেখুন এবং উপরে বর্ণিত দুটি লাইন রাখুন:

....
MAKE_TARBALL=""
EXTRACTOR_OVERRIDE=""
UNPACK_TARBALL=""
ADDITIONAL=""
EXCLUDE=""
VERBOSE=""
CERTIFICATE=""
CHECKCERTIF=""
PRIVATEKEY=""

DEF_MIRROR=”http://mirrors.kernel.org/ubuntu”
DEF_HTTPS_MIRROR=”https://mirrors.kernel.org/ubuntu”

১৪. অবশেষে একই lxc-create কমান্ড জারি করে উবুন্টু টেমপ্লেটের ভিত্তিতে একটি নতুন এলএক্সসি ধারক তৈরি করুন।

উবুন্টু ধারক তৈরির প্রক্রিয়াটি একবার শেষ হয়ে গেলে কোনও বার্তা নীচের স্ক্রিনশটে চিত্রিত হিসাবে আপনার ধারক ডিফল্ট লগইন শংসাপত্রগুলি প্রদর্শন করবে।

# lxc-create -n myubuntu -t ubuntu
Checking cache download in /var/cache/lxc/precise/rootfs-amd64 ... 
Installing packages in template: ssh,vim,language-pack-en
Downloading ubuntu precise minimal ...

15. স্থানীয় টেম্পলেট ভিত্তিক একটি নির্দিষ্ট ধারক তৈরি করতে নিম্নলিখিত সিনট্যাক্সটি ব্যবহার করুন:

# lxc-create -n container_name -t container_template -- -r distro_release -a distro_architercture 

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

# lxc-create -n mywheezy -t debian -- -r wheezy -a amd64
debootstrap is /sbin/debootstrap
Checking cache download in /var/cache/lxc/debian/rootfs-wheezy-amd64 ... 
Downloading debian minimal ...
W: Cannot check Release signature; keyring file not available /usr/share/keyrings/debian-archive-keyring.gpg
I: Retrieving Release 
I: Retrieving Packages 
I: Validating Packages 
I: Resolving dependencies of required packages...
I: Resolving dependencies of base packages...
I: Found additional required dependencies: insserv libbz2-1.0 libdb5.1 libsemanage-common libsemanage1 libslang2 libustr-1.0-1 
I: Found additional base dependencies: adduser debian-archive-keyring gnupg gpgv isc-dhcp-common libapt-pkg4.12 libbsd0 libclass-isa-perl libedit2 libgdbm3 libgssapi-krb5-2 libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 libncursesw5 libprocps0 libreadline6 libssl1.0.0 libstdc++6 libswitch-perl libusb-0.1-4 libwrap0 openssh-client perl perl-modules procps readline-common 
I: Checking component main on http://http.debian.net/debian...
I: Retrieving libacl1 2.2.51-8
I: Validating libacl1 2.2.51-8
I: Retrieving adduser 3.113+nmu3
I: Validating adduser 3.113+nmu3
I: Retrieving apt 0.9.7.9+deb7u7
I: Validating apt 0.9.7.9+deb7u7
I: Retrieving libapt-pkg4.12 0.9.7.9+deb7u7
I: Validating libapt-pkg4.12 0.9.7.9+deb7u7
I: Retrieving libattr1 1:2.4.46-8
I: Validating libattr1 1:2.4.46-8
I: Retrieving base-files 7.1wheezy9
I: Validating base-files 7.1wheezy9
I: Retrieving base-passwd 3.5.26
...

১.. উদাহরণস্বরূপ, জেনেরিক টেম্পলেট থেকে বিভিন্ন ডিস্ট্রো রিলিজ এবং আর্কিটেকচারের জন্য নির্দিষ্ট পাত্রে তৈরি করা যেতে পারে যা নীচের উদাহরণে বর্ণিত হিসাবে এলএক্সসি সংগ্রহস্থল থেকে ডাউনলোড করা হবে।

# lxc-create -n mycentos6 -t download -- -d centos -r 6 -a i386

এখানে lxc-create কমান্ড লাইন সুইচগুলির তালিকা রয়েছে:

-n = name 
-t = template
-d = distibution
-a = arch
-r = release

17. কনটেইনার নামের বিরুদ্ধে জারি করা lxc-नष्ट > কমান্ডের সাহায্যে আপনার হোস্ট থেকে ধারকগুলি মুছে ফেলা যাবে।

# lxc-destroy -n mywheezy

18. একটি কনটেইনারটি একটি বিদ্যমান ধারক থেকে lxc-clone কমান্ড জারি করে ক্লোন করা যেতে পারে:

# lxc-clone mydeb mydeb-clone

১৯. এবং অবশেষে, সমস্ত তৈরি পাত্রে /var/lib/lxc/ ডিরেক্টরিতে থাকে। যদি কোনও কারণে আপনাকে ম্যানুয়ালি ধারক সেটিংস সামঞ্জস্য করতে হয় তবে আপনাকে অবশ্যই প্রতিটি কন্টেইনার ডিরেক্টরি থেকে কনফিগার ফাইলটি সম্পাদনা করতে হবে।

# ls /var/lib/lxc

এলএক্সসির আশেপাশে আপনার পথে কাজ করার জন্য আপনাকে কেবল এটি প্রাথমিক জিনিসগুলি জানতে হবে।