LXC nedir? | LXC kurulumu | Konteyner Oluşturma

lxc

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
virbr0 ağını lxc kullanmaktadır. docker aklınızı karıştırmasın

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 -- --list
alpine    3.10    amd64   default 20191210_13:00
alpine 3.10 arm64 default 20191210_13:00
alpine 3.10 armhf default 20191210_13:00
alpine 3.10 i386 default 20191210_13:00
alpine 3.10 ppc64el default 20191210_13:00
alpine 3.10 s390x default 20191210_13:00
alpine 3.7 amd64 default 20191210_13:00
alpine 3.7 arm64 default 20191210_13:00
alpine 3.7 armhf default 20191210_13:00
alpine 3.7 i386 default 20191210_13:00
alpine 3.8 amd64 default 20191210_13:00
alpine 3.8 arm64 default 20191210_13:00
alpine 3.8 armhf default 20191210_13:00
alpine 3.8 i386 default 20191210_13:00
alpine 3.8 ppc64el default 20191210_13:00
alpine 3.8 s390x default 20191210_13:00
alpine 3.9 amd64 default 20191210_13:00
alpine 3.9 arm64 default 20191210_13:00
alpine 3.9 armhf default 20191210_13:00
alpine 3.9 i386 default 20191210_13:00
alpine 3.9 ppc64el default 20191210_13:00
alpine 3.9 s390x default 20191210_13:00
alpine edge amd64 default 20191210_13:00
alpine edge arm64 default 20191210_13:00
alpine edge armhf default 20191210_13:00
alpine edge i386 default 20191210_13:00
alpine edge ppc64el default 20191210_13:00
alpine edge s390x default 20191210_13:00
alt Sisyphus amd64 default 20191210_01:17
alt Sisyphus arm64 default 20191210_01:17
alt Sisyphus i386 default 20191210_01:18
alt Sisyphus ppc64el default 20191210_01:17
alt p8 amd64 default 20191210_01:17
alt p8 i386 default 20191210_01:18
alt p9 amd64 default 20191210_01:17
alt p9 arm64 default 20191210_01:17
alt p9 i386 default 20191210_01:17
alt p9 ppc64el default 20191119_01:17
apertis 17.12 amd64 default 20191117_10:53
apertis 17.12 arm64 default 20191117_10:53
apertis 17.12 armhf default 20191117_10:53
apertis 18.03 amd64 default 20191117_10:53
apertis 18.03 arm64 default 20191117_10:53
apertis 18.03 armhf default 20191117_10:53
apertis 18.06 amd64 default 20191117_10:53
apertis 18.06 arm64 default 20191117_10:53
apertis 18.06 armhf default 20191117_10:53
apertis 18.09 amd64 default 20191117_10:53
apertis 18.09 arm64 default 20191117_10:53
apertis 18.09 armhf default 20191119_11:19
apertis 18.12 amd64 default 20191210_10:53
apertis 18.12 arm64 default 20191210_10:53
apertis 18.12 armhf default 20191210_10:53
archlinux current amd64 default 20191210_04:18
archlinux current arm64 default 20191203_16:19
archlinux current armhf default 20191203_16:19
centos 6 amd64 default 20191210_07:08
centos 6 i386 default 20191210_07:08
centos 7 amd64 default 20191210_07:08
centos 7 arm64 default 20191210_07:08
centos 7 armhf default 20191210_07:08
centos 7 i386 default 20191210_07:08
centos 7 ppc64el default 20191210_07:08
centos 8 amd64 default 20191210_07:08
centos 8 arm64 default 20191210_07:08
centos 8 ppc64el default 20191210_07:08
debian bullseye amd64 default 20191210_05:24
debian bullseye arm64 default 20191210_05:36
debian bullseye armel default 20191210_05:37
debian bullseye armhf default 20191210_05:53
debian bullseye i386 default 20191210_05:24
debian bullseye ppc64el default 20191210_05:24
debian bullseye s390x default 20191210_05:24
debian buster amd64 default 20191210_05:24
debian buster arm64 default 20191210_05:24
debian buster armel default 20191210_05:41
debian buster armhf default 20191210_05:40
debian buster i386 default 20191210_05:24
debian buster ppc64el default 20191210_05:24
debian buster s390x default 20191210_05:24
debian jessie amd64 default 20191210_05:24
debian jessie armel default 20191210_05:24
debian jessie armhf default 20191210_05:42
debian jessie i386 default 20191210_05:25
debian sid amd64 default 20191210_05:24
debian sid arm64 default 20191210_05:39
debian sid armel default 20191210_05:24
debian sid armhf default 20191210_05:41
debian sid i386 default 20191210_05:24
debian sid ppc64el default 20191210_05:24
debian sid s390x default 20191210_05:24
debian stretch amd64 default 20191210_05:24
debian stretch arm64 default 20191210_05:31
debian stretch armel default 20191210_05:24
debian stretch armhf default 20191210_05:42
debian stretch i386 default 20191210_05:24
debian stretch ppc64el default 20191210_05:24
debian stretch s390x default 20191210_05:24
devuan ascii amd64 default 20191210_11:50
devuan ascii arm64 default 20191210_11:50
devuan ascii armel default 20191210_11:50
devuan ascii armhf default 20191210_11:50
devuan ascii i386 default 20191210_11:50
fedora 29 amd64 default 20191209_20:33
fedora 29 arm64 default 20191209_20:33
fedora 29 armhf default 20191209_20:33
fedora 29 ppc64el default 20191209_20:33
fedora 29 s390x default 20191209_20:33
fedora 30 amd64 default 20191209_20:33
fedora 30 arm64 default 20191209_20:33
fedora 30 ppc64el default 20191209_20:33
fedora 30 s390x default 20191209_20:33
fedora 31 amd64 default 20191209_20:33
fedora 31 arm64 default 20191209_20:33
fedora 31 ppc64el default 20191209_20:33
fedora 31 s390x default 20191209_20:33
funtoo 1.3 amd64 default 20191209_16:45
funtoo 1.3 arm64 default 20191209_16:45
funtoo 1.3 armhf default 20191209_16:45
funtoo 1.3 i386 default 20191209_16:45
gentoo current amd64 default 20191210_16:07
gentoo current armhf default 20191210_16:07
gentoo current i386 default 20191210_16:07
gentoo current ppc64el default 20191210_16:07
gentoo current s390x default 20191210_16:07
kali current amd64 default 20191209_17:14
kali current arm64 default 20191209_17:14
kali current armel default 20191209_17:14
kali current armhf default 20191209_17:14
kali current i386 default 20191209_17:14
mint sarah amd64 default 20191210_08:51
mint sarah i386 default 20191210_08:52
mint serena amd64 default 20191210_08:51
mint serena i386 default 20191210_08:51
mint sonya amd64 default 20191210_08:51
mint sonya i386 default 20191210_08:51
mint sylvia amd64 default 20191210_08:51
mint sylvia i386 default 20191210_08:52
mint tara amd64 default 20191210_08:51
mint tara i386 default 20191210_08:51
mint tessa amd64 default 20191210_08:51
mint tessa i386 default 20191210_08:51
mint tina amd64 default 20191210_08:51
mint tina i386 default 20191210_08:51
opensuse 15.0 amd64 default 20191205_04:20
opensuse 15.0 arm64 default 20191205_04:20
opensuse 15.1 amd64 default 20191210_04:20
opensuse 15.1 arm64 default 20191210_04:20
opensuse 15.1 ppc64el default 20191210_04:20
opensuse tumbleweed amd64 default 20191210_04:21
opensuse tumbleweed arm64 default 20191210_04:20
opensuse tumbleweed i386 default 20191210_04:20
opensuse tumbleweed ppc64el default 20191210_04:20
openwrt 18.06 amd64 default 20191210_11:57
openwrt current amd64 default 20190903_11:57
openwrt snapshot amd64 default 20191210_11:57
oracle 6 amd64 default 20191210_07:46
oracle 6 i386 default 20191210_07:46
oracle 7 amd64 default 20191210_07:46
oracle 8 amd64 default 20191210_09:14
plamo 6.x amd64 default 20191210_01:33
plamo 6.x i386 default 20191210_01:33
plamo 7.x amd64 default 20191210_01:33
sabayon current amd64 default 20191210_01:52
ubuntu bionic amd64 default 20191210_07:42
ubuntu bionic arm64 default 20191210_07:42
ubuntu bionic armhf default 20191210_08:05
ubuntu bionic i386 default 20191210_07:42
ubuntu bionic ppc64el default 20191210_07:54
ubuntu bionic s390x default 20191210_07:42
ubuntu cosmic amd64 default 20191029_07:42
ubuntu cosmic arm64 default 20191029_07:42
ubuntu cosmic armhf default 20191029_08:15
ubuntu cosmic i386 default 20191029_07:43
ubuntu cosmic ppc64el default 20191029_07:42
ubuntu cosmic s390x default 20191029_07:42
ubuntu disco amd64 default 20191210_07:42
ubuntu disco arm64 default 20191210_07:42
ubuntu disco armhf default 20191210_08:01
ubuntu disco i386 default 20191210_07:43
ubuntu disco ppc64el default 20191210_07:56
ubuntu disco s390x default 20191210_07:42
ubuntu eoan amd64 default 20191210_07:42
ubuntu eoan arm64 default 20191210_07:57
ubuntu eoan armhf default 20191210_07:42
ubuntu eoan i386 default 20191210_07:43
ubuntu eoan ppc64el default 20191210_07:42
ubuntu eoan s390x default 20191210_07:42
ubuntu focal amd64 default 20191210_07:42
ubuntu focal arm64 default 20191210_07:54
ubuntu focal armhf default 20191210_07:42
ubuntu focal i386 default 20191206_07:44
ubuntu focal ppc64el default 20191210_07:42
ubuntu focal s390x default 20191210_07:49
ubuntu trusty amd64 default 20191210_07:42
ubuntu trusty arm64 default 20191210_07:42
ubuntu trusty armhf default 20191210_07:59
ubuntu trusty i386 default 20191210_07:43
ubuntu trusty ppc64el default 20191210_07:42
ubuntu xenial amd64 default 20191210_07:42
ubuntu xenial arm64 default 20191210_07:55
ubuntu xenial armhf default 20191210_07:42
ubuntu xenial i386 default 20191210_07:42
ubuntu xenial ppc64el default 20191210_07:55
ubuntu xenial s390x default 20191210_07:42
voidlinux current amd64 default 20191209_17:10
voidlinux current arm64 default 20191209_17:10
voidlinux 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/


Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir