ວິທີການຕິດຕັ້ງ, ສ້າງແລະຄຸ້ມຄອງ LXC (Linux Containers) ໃນ RHEL/CentOS 7
LXC, ຊື່ຫຍໍ້ ສຳ ລັບ Linux Containers, ແມ່ນການແກ້ໄຂບັນຫາແບບເສີຍໆຂອງ Linux kernel, ເຊິ່ງປະຕິບັດຢູ່ເທິງສຸດຂອງລະບົບປະຕິບັດການ, ຊ່ວຍໃຫ້ທ່ານສາມາດແຈກຢາຍການແຈກຢາຍແບບໂດດດ່ຽວຫຼາຍຄັ້ງໃນເວລາດຽວກັນ.
ຄວາມແຕກຕ່າງລະຫວ່າງ LXC ແລະ KVM virtualization ແມ່ນວ່າ LXC ບໍ່ໄດ້ຮວບຮວມຮາດແວ, ແຕ່ແບ່ງປັນຊື່ namespace ດຽວກັນ, ຄ້າຍຄືກັບ chroot applications.
ສິ່ງດັ່ງກ່າວເຮັດໃຫ້ LXC ເປັນໂຊລູຊັ່ນການແກ້ໄຂບັນຫາການໃຊ້ virtualization ໄດ້ໄວຫຼາຍຖ້າທຽບໃສ່ກັບໂຊລູຊັ່ນການໃຊ້ virtualization ອື່ນໆ, ເຊັ່ນວ່າ VMware.
ບົດຂຽນນີ້ຈະແນະ ນຳ ທ່ານກ່ຽວກັບວິທີທີ່ທ່ານສາມາດຕິດຕັ້ງ, ນຳ ໃຊ້ແລະ ດຳ ເນີນການບັນຈຸ LXC ໃນການ ຈຳ ໜ່າຍ CentOS/RHEL ແລະ Fedora.
ລະບົບປະຕິບັດການ Linux ທີ່ເຮັດວຽກດ້ວຍການຕິດຕັ້ງ ໜ້ອຍ ທີ່ສຸດ:
<
ຂັ້ນຕອນທີ 1: ການຕິດຕັ້ງ LXC Virtualization ໃນ Linux
1. ການອັດຕະໂນມັດ LXC ແມ່ນສະ ໜອງ ໃຫ້ຜ່ານຫໍສະ ໝຸດ Epel. ເພື່ອຈະໃຊ້ repo ນີ້, ເປີດ terminal ແລະຕິດຕັ້ງຫໍສະ ໝຸດ Epel ໃນລະບົບຂອງທ່ານໂດຍການອອກ ຄຳ ສັ່ງຕໍ່ໄປນີ້:
# yum install epel-release
2. ກ່ອນທີ່ຈະສືບຕໍ່ຂັ້ນຕອນການຕິດຕັ້ງ LXC, ຮັບປະກັນວ່ານາຍແປພາສາພາສາ Perl, ແລະຊຸດ debootstrap ຖືກຕິດຕັ້ງໂດຍການອອກ ຄຳ ສັ່ງຂ້າງລຸ່ມນີ້.
# yum install debootstrap perl libvirt
3. ສຸດທ້າຍຕິດຕັ້ງໂຊລູຊັ່ນ virtualization LXC ດ້ວຍ ຄຳ ສັ່ງຕໍ່ໄປນີ້.
# yum install lxc lxc-templates
4. ຫຼັງຈາກທີ່ບໍລິການ LXC ໄດ້ຕິດຕັ້ງແລ້ວ, ກວດສອບວ່າ LXC ແລະ daemon 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: ສ້າງແລະຄຸ້ມຄອງບັນຈຸ LXC ໃນ Linux
5. ເພື່ອຈົດບັນຈຸບັນຈຸ LXC ທີ່ມີຢູ່ແລ້ວທີ່ຕິດຕັ້ງຢູ່ໃນລະບົບຂອງທ່ານອອກ ຄຳ ສັ່ງຂ້າງລຸ່ມນີ້.
# 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
6. ຂັ້ນຕອນການສ້າງພາຊະນະ LXC ແມ່ນງ່າຍດາຍຫຼາຍ. syntax ຄຳ ສັ່ງໃນການສ້າງພາຊະນະ ໃໝ່ ແມ່ນອະທິບາຍຢູ່ລຸ່ມນີ້.
# lxc-create -n container_name -t container_template
ໃນບົດຄັດຫຍໍ້ລຸ່ມນີ້, ພວກເຮົາຈະສ້າງພາຊະນະ ໃໝ່ ທີ່ມີຊື່ວ່າ mydeb
ອີງໃສ່ແມ່ແບບ debian
ທີ່ຈະຖືກດຶງອອກຈາກຫໍສະມຸດ LXC.
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... ... ...
7. ຫຼັງຈາກຊຸດຂອງຄວາມເພິ່ງພາອາໄສແລະແພກເກດທີ່ຈະຖືກດາວໂຫລດແລະຕິດຕັ້ງໃນລະບົບຂອງທ່ານບັນຈຸຈະຖືກສ້າງຂື້ນ ເມື່ອຂະບວນການສິ້ນສຸດຂໍ້ຄວາມຈະສະແດງລະຫັດຜ່ານບັນຊີຮາກເລີ່ມຕົ້ນຂອງທ່ານ. ປ່ຽນລະຫັດລັບນີ້ເມື່ອທ່ານເລີ່ມຕົ້ນແລະເຂົ້າສູ່ລະບົບຄອນເທັນເນີເພື່ອທີ່ຈະປອດໄພ.
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.
8. ດຽວນີ້, ທ່ານສາມາດໃຊ້ lxc-ls
ເພື່ອລົງບັນຈຸບັນຈຸຂອງທ່ານແລະ lxc-info
ເພື່ອເອົາຂໍ້ມູນກ່ຽວກັບຖັງທີ່ແລ່ນ/ຢຸດ.
ເພື່ອເລີ່ມຕົ້ນບັນຈຸພາຊະນະທີ່ສ້າງຂື້ນ ໃໝ່ ໃນພື້ນຫລັງ (ຈະໃຊ້ເປັນໂດເມນໂດຍລະບຸຕົວເລືອກ -d
) ອອກ ຄຳ ສັ່ງດັ່ງຕໍ່ໄປນີ້:
# lxc-start -n mydeb -d
9. ຫຼັງຈາກການບັນຈຸໄດ້ເລີ່ມຕົ້ນແລ້ວທ່ານສາມາດລົງບັນຊີແລ່ນທີ່ໃຊ້ ຄຳ ສັ່ງ lxc-ls --active
ແລະໄດ້ຮັບຂໍ້ມູນລະອຽດກ່ຽວກັບພາຊະນະທີ່ແລ່ນ.
# lxc-ls --active
10. ເພື່ອເຂົ້າສູ່ລະບົບບັນຈຸຄອນເທັນເນີອອກ ຄຳ ສັ່ງ lxc-console
ໃສ່ກັບຊື່ບັນຈຸທີ່ ກຳ ລັງແລ່ນ. ເຂົ້າສູ່ລະບົບກັບຜູ້ໃຊ້ຮາກແລະລະຫັດຜ່ານທີ່ຜະລິດໂດຍຄ່າເລີ່ມຕົ້ນໂດຍຜູ້ຄວບຄຸມ lxc.
ເມື່ອເຂົ້າສູ່ລະບົບບັນຈຸແລ້ວທ່ານສາມາດເອີ້ນໃຊ້ ຄຳ ສັ່ງ ຈຳ ນວນ ໜຶ່ງ ເພື່ອກວດສອບການແຈກຢາຍໂດຍການສະແດງເນື້ອຫາເອກະສານ /etc/issue.net
, ປ່ຽນລະຫັດລັບຮາກໂດຍການອອກ ຄຳ ສັ່ງ passwd
ຫຼືເບິ່ງລາຍລະອຽດກ່ຽວກັບອິນເຕີເຟດເຄືອຂ່າຍກັບ ifconfig
.
# lxc-console -n mydeb # cat /etc/issue.net # ifconfig # passwd
lxc-console -n mydcb Connected to tty 1 Type <Ctrl+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
11. ເພື່ອຖອດລະຫັດຄອນເທັນເນີແລະກັບໄປທີ່ຄອນໂຊນໂຮດຂອງທ່ານໂດຍເຮັດໃຫ້ຖັງບັນຈຸຢູ່ໃນສະຖານະການເຄື່ອນໄຫວ, ກົດ Ctrl + a
ແລ້ວ q
ຢູ່ເທິງແປ້ນພິມ.
ເພື່ອຢຸດບັນຫາພາຊະນະທີ່ແລ່ນຢູ່ບັນດາ ຄຳ ສັ່ງຕໍ່ໄປນີ້.
# lxc-stop -n mydcb
12. ເພື່ອສ້າງພາຊະນະ LXC ໂດຍອີງໃສ່ແມ່ແບບຂອງ Ubuntu, ໃຫ້ໃສ່ໄດເລກະທໍລີ /usr/sbin/
ແລະສ້າງ link link debootstrap ຕໍ່ໄປນີ້.
# cd /usr/sbin # ln -s debootstrap qemu-debootstrap
13. ແກ້ໄຂເອກະສານ qemu-debootstrap
ກັບບັນນາທິການ Vi ແລະແທນທີ່ສອງສາຍ MIRROR ຕໍ່ໄປນີ້:
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”
14. ສຸດທ້າຍສ້າງຖັງ LXC ໃໝ່ ໂດຍອີງໃສ່ແມ່ແບບ 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. ເພື່ອສ້າງພາຊະນະສະເພາະໂດຍອີງໃສ່ແມ່ແບບທ້ອງຖິ່ນໃຊ້ syntax ຕໍ່ໄປນີ້:
# lxc-create -n container_name -t container_template -- -r distro_release -a distro_architercture
ນີ້ແມ່ນບົດຄັດຫຍໍ້ຂອງການສ້າງຖັງ wheezy debian ທີ່ມີສະຖາປັດຕະຍະ ກຳ ຂອງລະບົບ 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 ...
16. ຍົກຕົວຢ່າງ, ພາຊະນະສະເພາະ ສຳ ລັບການເຜີຍແຜ່ແລະສະຖາປັດຕະຍະ ກຳ ທີ່ແຕກຕ່າງກັນກໍ່ສາມາດສ້າງຈາກແມ່ແບບທົ່ວໄປເຊິ່ງຈະຖືກດາວໂຫລດມາຈາກຫໍສະມຸດ LXC ຕາມທີ່ສະແດງໃນຕົວຢ່າງຂ້າງລຸ່ມນີ້.
# 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-destroy
ທີ່ອອກຕໍ່ກັບຊື່ບັນຈຸ.
# lxc-destroy -n mywheezy
18. ຕູ້ຄອນເທນເນີສາມາດຖືກລອກອອກຈາກພາຊະນະທີ່ມີຢູ່ແລ້ວໂດຍການອອກ ຄຳ ສັ່ງ lxc-clone
:
# lxc-clone mydeb mydeb-clone
19. ແລະສຸດທ້າຍ, ພາຊະນະທີ່ຖືກສ້າງຂື້ນທັງ ໝົດ ແມ່ນຢູ່ໃນລະບົບ /var/lib/lxc/
. ຖ້າບາງເຫດຜົນທ່ານ ຈຳ ເປັນຕ້ອງດັດປັບການຕັ້ງຄ່າພາຊະນະບັນຈຸດ້ວຍຕົນເອງທ່ານຕ້ອງແກ້ໄຂເອກະສານ config ຈາກແຕ່ລະບ່ອນບັນຈຸ.
# ls /var/lib/lxc
ນີ້ແມ່ນພຽງແຕ່ສິ່ງພື້ນຖານທີ່ທ່ານຕ້ອງການຮູ້ເພື່ອເຮັດວຽກຂອງທ່ານຮອບ LXC.