Kako namestiti, ustvariti in upravljati LXC (zabojniki za Linux) v RHEL/CentOS 7
LXC, kratica za Linux Containers, je lahka rešitev za virtualizacijo na osnovi jedra Linuxa, ki se praktično izvaja na vrhu operacijskega sistema in omogoča istočasno izvajanje več ločenih distribucij.
Razlika med virtualizacijo LXC in KVM je v tem, da LXC ne posnema strojne opreme, temveč si deli isti imenski prostor jedra, podobno kot aplikacije chroot.
Zaradi tega je LXC zelo hitra rešitev za virtualizacijo v primerjavi z drugimi rešitvami za virtualizacijo, kot je VMware.
Ta članek vas bo vodil po tem, kako lahko namestite, postavite in zaženete vsebnike LXC v distribucijah CentOS/RHEL in Fedora.
Delujoči operacijski sistem Linux z minimalno namestitvijo:
- Namestitev CentOS 7 Linux
- Namestitev RHEL 7
- Namestitev strežnika Fedora 23
1. korak: Namestitev LXC virtualizacije v Linux
1. Virtualizacija LXC je na voljo prek Epelovih skladišč. Če želite uporabiti to repo, odprite terminal in v sistem namestite repozitorije Epel, tako da izdate naslednji ukaz:
# yum install epel-release
2. Preden nadaljujete s postopkom namestitve LXC, zagotovite, da so nameščeni tolmači Perl in paketi debootstrap z izdajo spodnjih ukazov.
# yum install debootstrap perl libvirt
3. Na koncu namestite še rešitev LXC za virtualizacijo z naslednjim ukazom.
# yum install lxc lxc-templates
4. Po namestitvi storitve LXC preverite, ali se izvajata demon LXC in 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.
in preverite stanje virtualizacije jedra LXC z izdajo spodnjega ukaza.
# 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. korak: Ustvarjanje in upravljanje vsebnikov LXC v Linuxu
5. Če želite seznam razpoložljivih vsebnikov predlog LXC, ki so že nameščeni v vašem sistemu, izdajte spodnji ukaz.
# 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. Postopek ustvarjanja vsebnika LXC je zelo preprost. Sintaksa ukaza za ustvarjanje novega vsebnika je pojasnjena spodaj.
# lxc-create -n container_name -t container_template
V spodnjem odlomku bomo na podlagi predloge debian
ustvarili nov vsebnik z imenom mydeb
, ki bo odstranjen iz skladišč 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. Po vrsti osnovnih odvisnosti in paketov, ki bodo preneseni in nameščeni v vašem sistemu, bo ustvarjen vsebnik. Ko se postopek konča, bo sporočilo prikazalo vaše privzeto geslo za korenski račun. Ko zaženete to geslo, ga spremenite, da boste varni.
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. Zdaj lahko z lxc-ls
navedete vsebnike in lxc-info
za pridobitev informacij o delujočem/ustavljenem vsebniku.
Če želite zagnati novo ustvarjeni vsebnik v ozadju (zažene se kot demon z določitvijo možnosti -d
), izdajte naslednji ukaz:
# lxc-start -n mydeb -d
9. Po zagonu vsebnika lahko z ukazom lxc-ls --active
izpišete tekoče vsebnike in dobite podrobne informacije o delujočem vsebniku.
# lxc-ls --active
10. Če se želite prijaviti v konzolo vsebnika, izdajte ukaz lxc-console
proti delujočemu imenu vsebnika. Prijavite se z uporabniškim korenom in geslom, ki ga je privzeto ustvaril nadzornik lxc.
Ko ste prijavljeni v vsebnik, lahko zaženete več ukazov, da preverite distribucijo tako, da prikažete vsebino datoteke /etc/issue.net
, spremenite korensko geslo z izdajo ukaza passwd
ali si oglejte podrobnosti o omrežnih vmesnikih z 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. Če se želite ločiti od konzole vsebnika in se vrniti na gostiteljsko konzolo, pri čemer pustite vsebnik v aktivnem stanju, pritisnite Ctrl + a
in nato q
na tipkovnici.
Če želite ustaviti tekoči vsebnik, izdajte naslednji ukaz.
# lxc-stop -n mydcb
12. Če želite ustvariti vsebnik LXC, ki temelji na predlogi Ubuntu, vnesite imenik /usr/sbin/
in ustvarite naslednjo debootstrap symlink.
# cd /usr/sbin # ln -s debootstrap qemu-debootstrap
13. Uredite datoteko qemu-debootstrap
z urejevalnikom Vi in zamenjajte naslednji dve vrstici OGLEDALA, kot sledi:
DEF_MIRROR=”http://mirrors.kernel.org/ubuntu” DEF_HTTPS_MIRROR=”https://mirrors.kernel.org/ubuntu”
Za referenco glejte naslednjo vsebino in postavite zgornji dve vrstici, kot je navedeno:
.... 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. Na koncu ustvarite nov vsebnik LXC na podlagi predloge Ubuntu, ki izda isti ukaz lxc-create
.
Ko se postopek ustvarjanja vsebnika Ubuntu konča, se prikažejo privzete poverilnice za prijavo vsebnika, kot je prikazano na spodnjem posnetku zaslona.
# 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. Če želite na podlagi lokalne predloge ustvariti poseben vsebnik, uporabite naslednjo sintakso:
# lxc-create -n container_name -t container_template -- -r distro_release -a distro_architercture
Tu je odlomek ustvarjanja debian piskajočega vsebnika s sistemsko arhitekturo 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. Na primer, iz splošne predloge, ki se bo prenesla iz skladišč LXC, je mogoče ustvariti posebne vsebnike za različne izdaje distro in arhitekture, kot je prikazano v spodnjem primeru.
# lxc-create -n mycentos6 -t download -- -d centos -r 6 -a i386
Tu je seznam stikal ukazne vrstice lxc-create
:
-n = name -t = template -d = distibution -a = arch -r = release
17. Zabojnike lahko z vašega gostitelja izbrišete z ukazom lxc-kill
, izdanim za ime vsebnika.
# lxc-destroy -n mywheezy
18. Vsebnik lahko klonirate iz obstoječega vsebnika z izdajo ukaza lxc-clone
:
# lxc-clone mydeb mydeb-clone
19. In končno, vsi ustvarjeni vsebniki se nahajajo v imeniku /var/lib/lxc/
. Če morate iz nekega razloga ročno prilagoditi nastavitve vsebnika, morate urediti konfiguracijsko datoteko iz vsakega imenika vsebnika.
# ls /var/lib/lxc
To so le osnovne stvari, ki jih morate vedeti, da se boste lažje potrudili po LXC.