Linux Containers (LXC), bir ana bilgisayarda (LXC ana bilgisayarı) birden fazla yalıtılmış Linux sistemi çalıştırmayı mümkün kılan işletim sistemi düzeyinde yeteneklerdir. Linux Konteynerleri, KVM, VMware ESXi veya Xen gibi hipervizörler aracılığıyla tam makine sanallaştırmasına hafif bir alternatif olarak hizmet eder. Linux, kullanıcıların Linux Konteynerler aracılığıyla sistem veya uygulama kapsayıcılarını kolayca oluşturmalarına ve yönetmelerine yardımcı olmak için güçlü bir API ve araç seti sunar. Linux Containers gerçek bir sanal makine (VM) oluşturmazken, Linux çekirdeğindeki cgroups özellikleriyle sanal bir ortam sağlarlar. VM donanım sanallaştırılmasına giderken daha az kaynak kullanarak yapılan işlemleri sistemden izole etmek istenildiği vakit LXC kullanmak mantıklı olacaktır.
Yukardaki tanımı okumadıysanız artık yeni bir container oluşturmaya başlayabiliriz. Okuduysanız ve bana göre değilmiş diyorsanız buradan çıkış yapabilirsiniz.
Kurulum
Fedora
sudo dnf install lxc lxc-templates lxc-extra debootstrap libvirt perl gpg
Debian
sudo apt install lxc libvirt-clients debootstrap
Network
/etc/lxc/default.conf dosyasında varsayılan köprüyü virbr0 konumuna getirmelisiniz:
Etkinleştirin
systemctl komutunu kullanarak libvirtd ve lxc adlı sanallaştırma arka planını başlatın
sudo systemctl start libvirtd.service
sudo systemctl start lxc.service
sudo systemctl enable lxc.service
Çalıştığını doğrulayın:
sudo systemctl status libvirtd.service
LXC ağı
Lxc için yapılandırılmış ağ arabirimini görüntülemek için;
sudo brctl show
Kernel Kontrolü
Geçerli çekirdeği lxc desteğini kontrol etmek için;
sudo lxc-checkconfig
Debian Linux Konteynerı oluşturmak
Debian 9 (“stretch”) konteynerı oluşturmak için ;
sudo lxc-create -t download -n debian-c1 -- -d debian -r stretch -a amd64
burda dikkat edilmesi gereken nokta -n parametresi name anlamına gelmektedir. Burda bizim konteynırımızın ismi debian-c1 dir. -d distro yu -r versiyonunu -a ise mimarisini belirtmektedir.
Root şifresini ayarlayın ve konteynırı başlatın:
sudo chroot /var/lib/lxc/debian-c1/rootfs/ passwd
sudo lxc-start -n debian-c1
lxc-console -n debian-c1
Şayet debian yerine başka imajlar yüklemek isterseniz aşağıdaki komut ve liste size yardımcı olacaktır.
Tüm imajları görmek için;
lxc-create -t download -n NULL -- --listalpine 3.10 amd64 default 20191210_13:00alpine 3.10 arm64 default 20191210_13:00alpine 3.10 armhf default 20191210_13:00alpine 3.10 i386 default 20191210_13:00alpine 3.10 ppc64el default 20191210_13:00alpine 3.10 s390x default 20191210_13:00alpine 3.7 amd64 default 20191210_13:00alpine 3.7 arm64 default 20191210_13:00alpine 3.7 armhf default 20191210_13:00alpine 3.7 i386 default 20191210_13:00alpine 3.8 amd64 default 20191210_13:00alpine 3.8 arm64 default 20191210_13:00alpine 3.8 armhf default 20191210_13:00alpine 3.8 i386 default 20191210_13:00alpine 3.8 ppc64el default 20191210_13:00alpine 3.8 s390x default 20191210_13:00alpine 3.9 amd64 default 20191210_13:00alpine 3.9 arm64 default 20191210_13:00alpine 3.9 armhf default 20191210_13:00alpine 3.9 i386 default 20191210_13:00alpine 3.9 ppc64el default 20191210_13:00alpine 3.9 s390x default 20191210_13:00alpine edge amd64 default 20191210_13:00alpine edge arm64 default 20191210_13:00alpine edge armhf default 20191210_13:00alpine edge i386 default 20191210_13:00alpine edge ppc64el default 20191210_13:00alpine edge s390x default 20191210_13:00alt Sisyphus amd64 default 20191210_01:17alt Sisyphus arm64 default 20191210_01:17alt Sisyphus i386 default 20191210_01:18alt Sisyphus ppc64el default 20191210_01:17alt p8 amd64 default 20191210_01:17alt p8 i386 default 20191210_01:18alt p9 amd64 default 20191210_01:17alt p9 arm64 default 20191210_01:17alt p9 i386 default 20191210_01:17alt p9 ppc64el default 20191119_01:17apertis 17.12 amd64 default 20191117_10:53apertis 17.12 arm64 default 20191117_10:53apertis 17.12 armhf default 20191117_10:53apertis 18.03 amd64 default 20191117_10:53apertis 18.03 arm64 default 20191117_10:53apertis 18.03 armhf default 20191117_10:53apertis 18.06 amd64 default 20191117_10:53apertis 18.06 arm64 default 20191117_10:53apertis 18.06 armhf default 20191117_10:53apertis 18.09 amd64 default 20191117_10:53apertis 18.09 arm64 default 20191117_10:53apertis 18.09 armhf default 20191119_11:19apertis 18.12 amd64 default 20191210_10:53apertis 18.12 arm64 default 20191210_10:53apertis 18.12 armhf default 20191210_10:53archlinux current amd64 default 20191210_04:18archlinux current arm64 default 20191203_16:19archlinux current armhf default 20191203_16:19centos 6 amd64 default 20191210_07:08centos 6 i386 default 20191210_07:08centos 7 amd64 default 20191210_07:08centos 7 arm64 default 20191210_07:08centos 7 armhf default 20191210_07:08centos 7 i386 default 20191210_07:08centos 7 ppc64el default 20191210_07:08centos 8 amd64 default 20191210_07:08centos 8 arm64 default 20191210_07:08centos 8 ppc64el default 20191210_07:08debian bullseye amd64 default 20191210_05:24debian bullseye arm64 default 20191210_05:36debian bullseye armel default 20191210_05:37debian bullseye armhf default 20191210_05:53debian bullseye i386 default 20191210_05:24debian bullseye ppc64el default 20191210_05:24debian bullseye s390x default 20191210_05:24debian buster amd64 default 20191210_05:24debian buster arm64 default 20191210_05:24debian buster armel default 20191210_05:41debian buster armhf default 20191210_05:40debian buster i386 default 20191210_05:24debian buster ppc64el default 20191210_05:24debian buster s390x default 20191210_05:24debian jessie amd64 default 20191210_05:24debian jessie armel default 20191210_05:24debian jessie armhf default 20191210_05:42debian jessie i386 default 20191210_05:25debian sid amd64 default 20191210_05:24debian sid arm64 default 20191210_05:39debian sid armel default 20191210_05:24debian sid armhf default 20191210_05:41debian sid i386 default 20191210_05:24debian sid ppc64el default 20191210_05:24debian sid s390x default 20191210_05:24debian stretch amd64 default 20191210_05:24debian stretch arm64 default 20191210_05:31debian stretch armel default 20191210_05:24debian stretch armhf default 20191210_05:42debian stretch i386 default 20191210_05:24debian stretch ppc64el default 20191210_05:24debian stretch s390x default 20191210_05:24devuan ascii amd64 default 20191210_11:50devuan ascii arm64 default 20191210_11:50devuan ascii armel default 20191210_11:50devuan ascii armhf default 20191210_11:50devuan ascii i386 default 20191210_11:50fedora 29 amd64 default 20191209_20:33fedora 29 arm64 default 20191209_20:33fedora 29 armhf default 20191209_20:33fedora 29 ppc64el default 20191209_20:33fedora 29 s390x default 20191209_20:33fedora 30 amd64 default 20191209_20:33fedora 30 arm64 default 20191209_20:33fedora 30 ppc64el default 20191209_20:33fedora 30 s390x default 20191209_20:33fedora 31 amd64 default 20191209_20:33fedora 31 arm64 default 20191209_20:33fedora 31 ppc64el default 20191209_20:33fedora 31 s390x default 20191209_20:33funtoo 1.3 amd64 default 20191209_16:45funtoo 1.3 arm64 default 20191209_16:45funtoo 1.3 armhf default 20191209_16:45funtoo 1.3 i386 default 20191209_16:45gentoo current amd64 default 20191210_16:07gentoo current armhf default 20191210_16:07gentoo current i386 default 20191210_16:07gentoo current ppc64el default 20191210_16:07gentoo current s390x default 20191210_16:07kali current amd64 default 20191209_17:14kali current arm64 default 20191209_17:14kali current armel default 20191209_17:14kali current armhf default 20191209_17:14kali current i386 default 20191209_17:14mint sarah amd64 default 20191210_08:51mint sarah i386 default 20191210_08:52mint serena amd64 default 20191210_08:51mint serena i386 default 20191210_08:51mint sonya amd64 default 20191210_08:51mint sonya i386 default 20191210_08:51mint sylvia amd64 default 20191210_08:51mint sylvia i386 default 20191210_08:52mint tara amd64 default 20191210_08:51mint tara i386 default 20191210_08:51mint tessa amd64 default 20191210_08:51mint tessa i386 default 20191210_08:51mint tina amd64 default 20191210_08:51mint tina i386 default 20191210_08:51opensuse 15.0 amd64 default 20191205_04:20opensuse 15.0 arm64 default 20191205_04:20opensuse 15.1 amd64 default 20191210_04:20opensuse 15.1 arm64 default 20191210_04:20opensuse 15.1 ppc64el default 20191210_04:20opensuse tumbleweed amd64 default 20191210_04:21opensuse tumbleweed arm64 default 20191210_04:20opensuse tumbleweed i386 default 20191210_04:20opensuse tumbleweed ppc64el default 20191210_04:20openwrt 18.06 amd64 default 20191210_11:57openwrt current amd64 default 20190903_11:57openwrt snapshot amd64 default 20191210_11:57oracle 6 amd64 default 20191210_07:46oracle 6 i386 default 20191210_07:46oracle 7 amd64 default 20191210_07:46oracle 8 amd64 default 20191210_09:14plamo 6.x amd64 default 20191210_01:33plamo 6.x i386 default 20191210_01:33plamo 7.x amd64 default 20191210_01:33sabayon current amd64 default 20191210_01:52ubuntu bionic amd64 default 20191210_07:42ubuntu bionic arm64 default 20191210_07:42ubuntu bionic armhf default 20191210_08:05ubuntu bionic i386 default 20191210_07:42ubuntu bionic ppc64el default 20191210_07:54ubuntu bionic s390x default 20191210_07:42ubuntu cosmic amd64 default 20191029_07:42ubuntu cosmic arm64 default 20191029_07:42ubuntu cosmic armhf default 20191029_08:15ubuntu cosmic i386 default 20191029_07:43ubuntu cosmic ppc64el default 20191029_07:42ubuntu cosmic s390x default 20191029_07:42ubuntu disco amd64 default 20191210_07:42ubuntu disco arm64 default 20191210_07:42ubuntu disco armhf default 20191210_08:01ubuntu disco i386 default 20191210_07:43ubuntu disco ppc64el default 20191210_07:56ubuntu disco s390x default 20191210_07:42ubuntu eoan amd64 default 20191210_07:42ubuntu eoan arm64 default 20191210_07:57ubuntu eoan armhf default 20191210_07:42ubuntu eoan i386 default 20191210_07:43ubuntu eoan ppc64el default 20191210_07:42ubuntu eoan s390x default 20191210_07:42ubuntu focal amd64 default 20191210_07:42ubuntu focal arm64 default 20191210_07:54ubuntu focal armhf default 20191210_07:42ubuntu focal i386 default 20191206_07:44ubuntu focal ppc64el default 20191210_07:42ubuntu focal s390x default 20191210_07:49ubuntu trusty amd64 default 20191210_07:42ubuntu trusty arm64 default 20191210_07:42ubuntu trusty armhf default 20191210_07:59ubuntu trusty i386 default 20191210_07:43ubuntu trusty ppc64el default 20191210_07:42ubuntu xenial amd64 default 20191210_07:42ubuntu xenial arm64 default 20191210_07:55ubuntu xenial armhf default 20191210_07:42ubuntu xenial i386 default 20191210_07:42ubuntu xenial ppc64el default 20191210_07:55ubuntu xenial s390x default 20191210_07:42voidlinux current amd64 default 20191209_17:10voidlinux current arm64 default 20191209_17:10voidlinux current armhf default 20191209_17:10
İstediğiniz imajı kurdunuz sistemi ayağa kaldırma vakti geldi.
lxc-start -n debian-c1
Sistemin çıktıları
lxc-info -n debian-c1
Sistemin anlık kaynak tüketimini görmek isterseniz;
lxc-top -n debian-c1
Konteyner imha
Bir konteyner çalışıyorsa, önce durdurun ve imha edin:
sudo lxc-stop -n debian-c1
sudo lxc-destroy -n debian-c1
Bir konteyner için snapshot oluşturma
sudo lxc-snapshot -n debian-c1 -c "2019/aralık da oluştutuldu"
-c comment anlamına gelmektedir.
Konteyner için snapshot listesi
sudo lxc-snapshot -n centos-c1 -L -C
Snapshot almadan önce kontenerı durdurmayı unutmayın
Snapshot geri yükleme
sudo lxc-snapshot -n debian-c1 -r snap0
Snapshot silme
sudo lxc-snapshot -n debian-c1 -d snap0
Bu yazı büyük hayal kırıklıkları içermektedir. Başta çok basit ve kullanması zevkli gelen bu teknoloji bana docker’ın kıymetini bir kez daha hatırlattı. Konteynerler aslında taşınabilir ve hızlıca kurulabilir oldukları için bizim için kıymetliler. Fakat LXC de oluşturduğunuz konteynerleri tar’ladıktan sonra taşıma işlemini gerçekleştiriyorsunuz. Bir kaç sitede qcow2 disk kalıbına taşınmanın mümkün olduğunu ama boot loader kısımlarının elle oluşturulması gerektiğinden bahsetmiş. Canonical’ın LXD biraz daha kullanım kolaylığı sağlasa da demo oluşturmak için çıktığım ve tanıdığım bu teknoloji yerine docker’ı tercih edeceğim. Şayet kvm üzerinde bir sanal makineniz var ise ve bunların kaynak tüketimini azaltmak istiyorsanız LXC mantıklı olacaktır. İşinize yaramasını umduğum linkleri aşağıya bırakıyorum. Kolay gelsin.
http://ilcofon.net/index.php/2016/05/29/migrate-lxc-container-to-a-new-virtual-machine-on-rhev/
https://stgraber.org/2013/12/20/lxc-1-0-blog-post-series/
Kaynak:https://medium.com/@bilselergun/lxc-nedir-lxc-kurulumu-konteyner-olu%C5%9Fturma-a03255c74523
Comments