LXC adalah singkatan dari Linux Containers.
Kontainer Linux adalah metode “virtualisasi” ringan yang menjalankan beberapa unit virtual secara bersamaan pada satu host kontrol pada satu kernel Linux.
Kernel Linux berisi cgroups untuk isolasi sumber daya (CPU, memori, blok I/O, jaringan, dll, ), yang tidak memerlukan memulai mesin virtual apa pun.
Cgroups juga menyediakan isolasi namespace untuk mengisolasi aplikasi sepenuhnya tampilan lingkungan operasi, termasuk pohon proses, jaringan, userid dan sistem file terpasang.
LXC adalah perangkat lunak sumber terbuka dan dilisensikan di bawah lisensi GNU LGPLv2.1+.
Container sebenarnya menggunakan fitur kernel yang disebut namespaces, cgroups, dan chroots, untuk mengukir area yang ditampung.
Jadi, hasil akhir dari LXC sangat mirip dengan mesin virtual, tetapi tanpa hypervisor.
1. Pra-persyaratan untuk Instal LXC
Sebelum Anda menginstal LXC, pastikan sistem Anda mutakhir menggunakan pembaruan yum seperti yang ditunjukkan di bawah ini.
# yum update
LXC bergantung pada dua perpustakaan; libpcap dan libcgroup. Ini juga memerlukan utilitas busybox dan bridge.
Instal paket yang diperlukan berikut untuk instalasi LXC kami.
# yum install libcap-devel libcgroup busybox wget bridge-utils
Mari kita pastikan bahwa kita mendapatkan semua kompiler dan alat pengembangan terkait yang diperlukan untuk mengompilasi dan menginstal perangkat lunak apa pun dari kode sumber.
# yum groupinstall "Development tools"
Untuk informasi lebih lanjut tentang grup yum, lihat artikel perintah yum kami.
2. Unduh LXC Linux Containers
Unduh versi terbaru LXC dari Linux Containers Project.
Gunakan wget untuk mengunduh bola tar versi stabil terbaru LXC ke mesin Anda seperti yang ditunjukkan di bawah ini.
# cd / # wget http://linuxcontainers.org/downloads/lxc-1.1.5.tar.gz
Jika Anda mendapatkan pesan kesalahan terkait sertifikat saat menggunakan wget di atas, gunakan opsi no-check-certificate seperti yang ditunjukkan di bawah ini.
# wget --no-check-certificate https://linuxcontainers.org/downloads/lxc-1.1.5.tar.gz
Atau, jika mau, Anda juga dapat menggunakan git clone untuk mengunduh versi pengembangan terbaru atau versi stabil seperti yang ditunjukkan di bawah ini.
git clone git://github.com/lxc/lxc -b {branch}
Dalam perintah di atas, {branch} dapat menjadi "master" untuk cabang pengembangan saat ini, atau "stable-1.0" untuk cabang pembaruan stabil versi 1.0.
3. Konfigurasikan Adaptor Terjembatan
Selanjutnya, buat adaptor yang dijembatani dan konfigurasikan IP statis pada adaptor yang dijembatani seperti yang ditunjukkan pada contoh ifcfg-eth0 berikut. Pastikan adaptor fisik Anda mengarah ke adaptor yang dijembatani ini di ifcfg-eth0.
# cd /etc/sysconfig/network-scripts # vi ifcfg-br0 DEVICE="br0" BOOTPROTO="static" IPADDR="xxx.xxx.xxx.xxx" NETMASK="255.255.255.xxx" ONBOOT="yes" TYPE="Bridge" NM_CONTROLLED="no"
Ganti semua "xxx" di file di atas dengan nilai yang cocok dengan alamat ip dan networkmask Anda. Misalnya, ubah nilai IPADDR dalam file di atas ke alamat ip mesin Anda.
4. Instal Wadah Linux LXC
Selanjutnya, untar tar ball LXC yang telah kita download tadi, jalankan ./configure, dan lakukan make and make install, untuk menginstall LXC pada sistem Anda seperti gambar di bawah ini.
Secara default, ini akan menginstal semua binari lxc di bawah direktori /usr/local/bin.
# cd / # tar xvfz lxc-1.1.5.tar.gz # cd lxc-1.1.5/ # ./configure # make && make install
Berikut ini adalah beberapa dari beberapa baris terakhir dari output untuk perintah ./configure di atas.
# ./configure ... ... config.status: creating src/python-lxc/setup.py config.status: creating src/lua-lxc/Makefile config.status: executing depfiles commands config.status: executing default commands ---------------------------- Environment: - compiler: gcc - distribution: centos - init script type(s): sysvinit - rpath: no - GnuTLS: no - Bash integration: yes Security features: - Apparmor: no - Linux capabilities: yes - seccomp: no - SELinux: no - cgmanager: no Bindings: - lua: no - python3: no Documentation: - examples: yes - API documentation: yes - user documentation: no Debugging: - tests: no - mutex debugging: no Paths: - Logs in configpath: no
Berikut ini adalah beberapa baris terakhir dari output perintah make di atas.
# make ... Building full member lists recursively... Adding members to member groups. ... Generating style sheet... Generating index page... Generating page index... Generating example documentation... Generating file sources... Generating code for file /usr/save/lxc-1.1.5/src/lxc/attach_options.h... Generating code for file /usr/save/lxc-1.1.5/src/lxc/lxccontainer.h... Generating code for file /usr/save/lxc-1.1.5/src/lxc/lxclock.h... Generating file documentation... Generating docs for file /usr/save/lxc-1.1.5/src/lxc/attach_options.h... ... Generating file member index... make[2]: Leaving directory `/usr/save/lxc-1.1.5/doc/api' make[2]: Entering directory `/usr/save/lxc-1.1.5/doc' ... Making all in hooks make[1]: Entering directory `/usr/save/lxc-1.1.5/hooks' make[1]: Nothing to be done for `all'. ...
Berikut ini adalah beberapa baris terakhir dari output perintah make install di atas.
# make install ... Making install in hooks make[1]: Entering directory `/usr/save/lxc-1.1.5/hooks' /bin/mkdir -p '/usr/local/share/lxc/hooks' /usr/bin/install -c clonehostname mountecryptfsroot ubuntu-cloud-prep squid-deb-proxy-client '/usr/local/share/lxc/hooks' ... /bin/mkdir -p /usr/local/var/lib/lxc /bin/mkdir -p /usr/local/var/cache/lxc /bin/mkdir -p '/usr/local/lib/pkgconfig' /usr/bin/install -c -m 644 lxc.pc '/usr/local/lib/pkgconfig' ...
5. Buat Tautan Lunak untuk Pustaka Bersama LXC
Jalankan lxc-info untuk memverifikasi bahwa LXC berhasil diinstal. Jika semuanya terpasang dengan benar, kita akan melihat pesan yang mengatakan bahwa nama wadah yang diberikan (misalnya, pengujian) tidak ada. Kami belum membuat penampung apa pun pada tahap ini. Kami hanya ingin memastikan perintah ini tidak menimbulkan kesalahan terkait pustaka bersama.
# lxc-info --name test test doesn't exist
Bergantung pada cara konfigurasi pada sistem Anda, Anda mungkin juga mendapatkan pesan kesalahan terkait pustaka liblxc.so.1 berikut.
# lxc-info --name test lxc-info: error while loading shared libraries: liblxc.so.1: cannot open shared object file: No such file or directory
Dalam hal ini, untuk memperbaikinya, buat tautan bernama libxc.so.1 seperti yang ditunjukkan di bawah ini, yang akan mengarah ke versi file liblxc.so.x.x.x yang benar.
# ln -s /usr/local/lib/liblxc.so.1.1.5 /lib64/liblxc.so.1 # ls -l /lib64/liblxc.so.1 lrwxrwxrwx. 1 root root 30 Jan 20 09:17 /lib64/liblxc.so.1 -> /usr/local/lib/liblxc.so.1.1.5
6. Verifikasi Pengaturan dan Konfigurasi LXC
Selanjutnya, Anda juga dapat menjalankan lxc-checkconfig untuk memverifikasi bahwa lingkungan lxc Anda telah disetel dengan benar.
Berikut ini akan memiliki output dalam empat bagian yang berbeda:1) Namespaces, 2) Control Groups 3) Misc dan 4) Checkpoint/Restore. Output sebagian ditunjukkan di bawah ini.
# lxc-checkconfig Kernel configuration not found at /proc/config.gz; searching... Kernel configuration found at /boot/config-2.6.32-431.el6.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 namespace: enabled Cgroup device: enabled Cgroup sched: enabled Cgroup cpu account: enabled .. --- Misc --- Veth pair device: enabled Macvlan: enabled Vlan: enabled Bridges: enabled Advanced netfilter: enabled .. --- Checkpoint/Restore --- CONFIG_EVENTFD: enabled CONFIG_EPOLL: enabled .. Note : Before booting a new kernel, you can check its configuration usage : CONFIG=/path/to/config /usr/local/bin/lxc-checkconfig
Jika semuanya dikonfigurasi dengan benar di sistem Anda, pada output di atas, semua opsi di grup di atas akan mengatakan "diaktifkan".
Besok, di bagian selanjutnya dari rangkaian artikel LXC, kami akan menjelaskan cara membuat, memulai, dan menggunakan wadah linux lxc menggunakan berbagai perintah lxc.