Takip et

LXC Nedir ve Neden Kullanmalıyız?

Linux Konteynerleri (LXC), sanallaştırma dünyasında hafif ve verimli bir alternatif sunar. Geleneksel sanal makinelerin aksine, LXC, ana sistemi

Linux Konteynerleri (LXC), sanallaştırma dünyasında hafif ve verimli bir alternatif sunar. Geleneksel sanal makinelerin aksine, LXC, ana sistemin çekirdeğini paylaşarak işletim sistemi düzeyinde izolasyon sağlar. Bu sayede, daha az kaynak tüketimiyle birden fazla izole ortam çalıştırabilir, geliştirme, test veya çeşitli servislerin dağıtımını kolaylaştırabilirsiniz.

Bu rehberde, Ubuntu 13.04 çalıştıran bir VPS (Sanal Özel Sunucu) üzerinde LXC’ye nasıl başlayacağınızı adım adım öğreneceksiniz. Ubuntu 13.04 eski bir sürüm olsa da, LXC’nin temel prensipleri ve kurulum adımları bu sürümde de geçerlidir ve mevcut altyapınızı verimli bir şekilde kullanmanızı sağlayabilir.

LXC Nedir ve Neden Kullanmalıyız?

LXC (Linux Containers), Linux çekirdeğinin cgroups (control groups) ve namespace özelliklerini kullanarak birden fazla izole Linux ortamını aynı ana sistem üzerinde çalıştırmanıza olanak tanıyan bir işletim sistemi düzeyinde sanallaştırma teknolojisidir. Geleneksel sanal makineler (KVM, VirtualBox gibi) her sanal makine için ayrı bir çekirdek ve işletim sistemi imajı gerektirirken, LXC konteynerleri ana sistemin çekirdeğini paylaşır. Bu, önemli avantajlar sağlar:

  • Daha Az Kaynak Tüketimi: Her konteynerin kendi çekirdeği olmadığından, RAM ve CPU kullanımı geleneksel sanal makinelere göre çok daha düşüktür. Bu, özellikle sınırlı kaynaklara sahip bir VPS için kritik bir avantajdır.
  • Daha Hızlı Başlangıç Süreleri: Konteynerler saniyeler içinde başlar, çünkü tam bir işletim sistemi önyüklemesi yapmazlar.
  • Daha Yüksek Yoğunluk: Aynı donanım üzerinde daha fazla izole servis veya uygulama çalıştırabilirsiniz.
  • İzolasyon: Her konteynerin kendi dosya sistemi, ağ arayüzleri, süreç ağacı ve kullanıcı alanı vardır. Bu, servislerinizin birbirini etkilemesini engeller ve güvenlik sağlar.
  • Esneklik: Geliştirme, test, üretim ortamlarını kolayca oluşturup yok edebilir, farklı uygulamalar için ayrı ortamlar sağlayabilirsiniz.

Bir VPS üzerinde LXC kullanmak, tek bir sunucuda birden fazla web sitesi, veritabanı sunucusu, geliştirme ortamı veya test ortamı gibi farklı servisleri güvenli ve izole bir şekilde çalıştırmanın maliyet etkin bir yoludur.

LXC Kurulumu ve Temel Yapılandırma

Ubuntu 13.04 VPS’inizde LXC’yi kurmak ve temel yapılandırmaları yapmak oldukça basittir. İlk olarak sunucunuzu güncelleyerek başlayalım.

Sistem Güncellemesi ve Gerekli Paketlerin Kurulumu

VPS’inize SSH ile bağlandıktan sonra, sistem paket listesini güncelleyin ve yüklü paketleri yükseltin:

sudo apt-get update
sudo apt-get upgrade -y

Şimdi LXC ve konteyner oluşturmak için gerekli olan diğer yardımcı programları kuralım:

sudo apt-get install lxc bridge-utils debootstrap -y
  • lxc: LXC konteyner yönetim araçlarını içerir.
  • bridge-utils: Ağ köprüsü oluşturmak ve yönetmek için kullanılır (LXC konteynerlerinin ağ iletişimi için gereklidir).
  • debootstrap: Konteynerlerin temel dosya sistemini oluşturmak için kullanılan bir araçtır.

LXC Yapılandırmasının Kontrolü

LXC’nin doğru şekilde çalışabilmesi için Linux çekirdeğinizin bazı özelliklere sahip olması gerekir. Bunu kontrol etmek için lxc-checkconfig komutunu kullanabilirsiniz:

lxc-checkconfig

Komutun çıktısında tüm maddelerin enabled (etkin) olarak görünmesi idealdir. Özellikle NAMESPACES ve CGROUPS ile ilgili maddelerin etkin olması kritik öneme sahiptir. Ubuntu 13.04 çekirdekleri genellikle bu gereksinimleri karşılar.

Varsayılan Ağ Köprüsü Yapılandırması

LXC varsayılan olarak lxcbr0 adında bir ağ köprüsü oluşturur ve konteynerlere bu köprü üzerinden IP adresi atar. Bu genellikle otomatik olarak yapılandırılır, ancak kontrol etmek veya değiştirmek isterseniz /etc/default/lxc veya /etc/lxc/default.conf dosyalarına bakabilirsiniz.

Varsayılan LXC yapılandırması genellikle /etc/lxc/default.conf dosyasında bulunur. Bu dosya, oluşturulan tüm konteynerler için geçerli olacak ayarları içerir. Örneğin, ağ ayarları şuna benzer olabilir:

lxc.net.0.type = veth
lxc.net.0.link = lxcbr0
lxc.net.0.flags = up
lxc.net.0.hwaddr = 00:16:3e:xx:xx:xx

Bu ayarlar, her konteynerin lxcbr0 köprüsüne bağlı sanal bir Ethernet arayüzü (veth) kullanmasını sağlar.

İlk LXC Konteynerinizi Oluşturma ve Yönetme

Artık LXC kurulu ve temel yapılandırmaları yapıldı. Şimdi ilk Ubuntu konteynerimizi oluşturalım.

Yeni Bir Konteyner Oluşturma

Bir LXC konteyneri oluşturmak için lxc-create komutunu kullanırız. Ubuntu 13.04 üzerinde, genellikle Ubuntu’nun daha güncel LTS (Uzun Süreli Destek) sürümlerini veya o döneme yakın sürümleri hedeflemek en iyisidir. Örneğin, Ubuntu 12.04 (Precise Pangolin) veya 14.04 (Trusty Tahr) gibi sürümleri hedefleyebiliriz. Bu örnekte, mycontainer adında ve trusty (Ubuntu 14.04) sürümünde bir konteyner oluşturalım:

sudo lxc-create -t ubuntu -n mycontainer -- -r trusty
  • -t ubuntu: Ubuntu şablonunu kullanacağımızı belirtir.
  • -n mycontainer: Konteynerimize mycontainer adını verir.
  • -- -r trusty: Şablonun argümanlarını belirtmek için kullanılır. Burada, oluşturulacak Ubuntu sürümünün trusty (14.04) olacağını söylüyoruz.

Bu komut biraz zaman alabilir, çünkü temel Ubuntu sistemini indirip kuracaktır. İşlem tamamlandığında, konteyneriniz /var/lib/lxc/mycontainer dizininde oluşturulacaktır.

Konteynerleri Listeleme

Oluşturduğunuz konteynerleri ve durumlarını görmek için:

sudo lxc-ls -f

Bu komut, konteynerin adını, durumunu (STOPPED, RUNNING), IP adresini ve diğer bilgileri gösterecektir.

Konteyneri Başlatma

Konteynerinizi başlatmak için aşağıdaki komutu kullanın:

sudo lxc-start -n mycontainer -d
  • -d: Konteyneri arka planda (detached) başlatır.

Konteynerin başlatıldığından emin olmak için tekrar lxc-ls -f komutunu kullanabilirsiniz. Durumu RUNNING olarak görünmelidir ve bir IP adresi atanmış olmalıdır.

Konteynere Bağlanma

Çalışan bir konteynere bağlanmanın birkaç yolu vardır:

1. lxc-console ile Bağlanma

Bu, konteynerin sanal konsoluna bağlanmanızı sağlar. Genellikle ilk önyükleme sırasında veya sorun giderme için kullanılır.

sudo lxc-console -n mycontainer

Varsayılan kullanıcı adı ubuntu ve parola da ubuntu olacaktır. İçeri girdikten sonra parolanızı değiştirmeniz şiddetle tavsiye edilir. Konsoldan çıkmak için Ctrl+a q tuş kombinasyonunu kullanın.

2. lxc-attach ile Bağlanma

Bu, çalışan bir konteynerin süreç ağacına doğrudan bağlanmanızı ve komutları ana sistemden çalıştırıyormuş gibi çalıştırmanızı sağlar. Konteyner içinde sudo yetkilerine sahip olursunuz.

sudo lxc-attach -n mycontainer

Çıkmak için exit yazmanız yeterlidir.

3. SSH ile Bağlanma

Konteynerinize uzaktan erişim için SSH en yaygın yöntemdir. İlk olarak, konteynerin içine girip OpenSSH sunucusunu kurmanız gerekir:

sudo lxc-attach -n mycontainer
apt-get update
apt-get install openssh-server -y
exit

Şimdi ana VPS’inizden veya başka bir makineden konteynerinize SSH yapabilirsiniz. Konteynerin IP adresini sudo lxc-ls -f komutuyla bulabilirsiniz.

ssh ubuntu@

Konteyneri Durdurma ve Yeniden Başlatma

Konteyneri durdurmak için:

sudo lxc-stop -n mycontainer

Konteyneri yeniden başlatmak için:

sudo lxc-reboot -n mycontainer

Konteyneri Silme

Bir konteyneri tamamen silmek için önce durdurmanız gerekir:

sudo lxc-stop -n mycontainer
sudo lxc-destroy -n mycontainer

Ağ Yapılandırması ve Konteyner İçinde Uygulama Çalıştırma

LXC konteynerleri varsayılan olarak ana sistemin oluşturduğu lxcbr0 ağ köprüsü üzerinden internete erişebilir ve kendi aralarında iletişim kurabilirler. Ancak, bu konteynerlere dışarıdan erişmek veya konteynerlerde çalışan servisleri internete açmak için ek yapılandırmalar gerekebilir.

Konteyner IP Adresini Bulma

Konteynerinizin IP adresini öğrenmek için en kolay yol:

sudo lxc-ls -f

Çıktıda IPV4 sütununda IP adresini göreceksiniz.

Konteyner İçinde Bir Web Sunucusu Çalıştırma

Örnek olarak, mycontainer içinde bir Nginx web sunucusu kuralım:

sudo lxc-attach -n mycontainer
apt-get update
apt-get install nginx -y
exit

Şimdi ana VPS’inizden konteynerinize erişerek Nginx’in çalışıp çalışmadığını kontrol edebilirsiniz:

curl http://

Nginx’in varsayılan hoş geldiniz sayfasını görmelisiniz.

Dışarıdan Erişime Açma (Port Yönlendirme)

VPS’inizin genellikle tek bir genel IP adresi vardır. Konteynerinizdeki bir servisi (örneğin Nginx) dış dünyaya açmak için ana VPS üzerinde port yönlendirme (port forwarding) yapmanız gerekir. Bunu iptables kuralları ile yaparız.

Örneğin, ana VPS’in 80. portuna gelen istekleri mycontainer‘ın 80. portuna yönlendirelim. Konteyner IP adresinizin 10.0.3.100 olduğunu varsayalım (kendi IP adresinizle değiştirin):

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.0.3.100:80
sudo iptables -A FORWARD -p tcp -d 10.0.3.100 --dport 80 -j ACCEPT

Bu kurallar, ana VPS’inizin genel IP adresine gelen HTTP (80) isteklerini konteynerinizin iç IP adresine yönlendirecektir.

iptables Kurallarını Kalıcı Hale Getirme

iptables kuralları varsayılan olarak sunucu yeniden başlatıldığında kaybolur. Bu kuralları kalıcı hale getirmek için iptables-persistent paketini kurabilirsiniz:

sudo apt-get install iptables-persistent -y

Kurulum sırasında mevcut kuralları kaydetmek isteyip istemediğiniz sorulacaktır. Evet yanıtını verin. Daha sonra kuralları manuel olarak kaydetmek veya geri yüklemek için:

sudo netfilter-persistent save
sudo netfilter-persistent reload

Artık VPS’inizin genel IP adresine web tarayıcınızla eriştiğinizde, LXC konteynerinizde çalışan Nginx web sayfasını görmelisiniz.

Sonuç ve Sıkça Sorulan Sorular (SSS)

Bu rehberde, Ubuntu 13.04 VPS’inizde LXC’yi kurmayı, ilk konteynerinizi oluşturmayı, yönetmeyi ve temel ağ yapılandırmalarını yapmayı öğrendiniz. LXC, sunucu kaynaklarınızı daha verimli kullanmanızı ve servislerinizi izole etmenizi sağlayan güçlü bir araçtır. Daha ileri düzey kullanımlar için kaynak limitleri (cgroups), gelişmiş ağ yapılandırmaları ve konteyner yedekleme gibi konuları araştırabilirsiniz.

Sıkça Sorulan Sorular (SSS)

Konteynerim internete çıkmıyor, ne yapmalıyım?

Öncelikle ana sistemde lxcbr0 ağ köprüsünün çalıştığından ve konteynerin bir IP adresi aldığından emin olun (sudo lxc-ls -f). Ardından, ana sistemin IP yönlendirme (IP forwarding) özelliğinin etkin olduğundan emin olun. Bunu kontrol etmek için sysctl net.ipv4.ip_forward komutunu kullanın. Eğer çıktı 0 ise, sudo sysctl -w net.ipv4.ip_forward=1 komutuyla etkinleştirebilir ve kalıcı hale getirmek için /etc/sysctl.conf dosyasına net.ipv4.ip_forward = 1 ekleyebilirsiniz. Son olarak, ana sistemdeki güvenlik duvarınızın (örneğin UFW veya iptables) lxcbr0 arayüzünden gelen ve giden trafiği engellemediğinden emin olun.

Konteynerime SSH ile bağlanamıyorum?

Konteyner içinde OpenSSH sunucusunun kurulu ve çalıştığından emin olun (sudo lxc-attach -n mycontainer ve sonra service ssh status). Ayrıca, konteynerin IP adresini doğru kullandığınızdan ve ana sistemdeki güvenlik duvarının SSH (varsayılan 22) portunu engellemediğinden emin olun.

LXC mi kullanmalıyım yoksa Docker mı?

LXC, işletim sistemi düzeyinde sanallaştırma sağlar ve genellikle daha çok “hafif bir sanal makine” gibi davranır. Bir LXC konteyneri içinde birden fazla servis çalıştırabilirsiniz. Docker ise uygulama düzeyinde kapsülleme sağlar ve genellikle tek bir uygulamanın veya servisin çalışması için tasarlanmıştır. Docker’ın katmanlı dosya sistemi ve imaj yönetimi daha modern bir yaklaşım sunar. Eğer temel bir işletim sistemi ortamına ihtiyacınız varsa ve ana sistemin çekirdeğini paylaşmak sorun değilse LXC uygun olabilir. Uygulama dağıtımı ve ölçeklendirme için Docker daha popülerdir. Ubuntu 13.04’te Docker desteği daha sınırlı olabilir, bu yüzden LXC bu senaryo için daha pratik bir başlangıç noktasıdır.

Konteynerlerimin kaynaklarını (CPU, RAM) nasıl sınırlarım?

LXC, Linux çekirdeğinin cgroups (control groups) özelliğini kullanarak konteynerlerin CPU, RAM ve disk G/Ç gibi kaynaklarını sınırlamanıza olanak tanır. Konteynerin yapılandırma dosyasına (/var/lib/lxc/mycontainer/config) aşağıdaki gibi satırlar ekleyerek bunu yapabilirsiniz:

lxc.cgroup.memory.limit_in_bytes = 512M
lxc.cgroup.cpu.shares = 512
lxc.cgroup.cpuset.cpus = 0-1

Bu ayarlar, konteynere 512 MB RAM sınırı, CPU kaynaklarının bir kısmını ve sadece 0 ve 1 numaralı CPU çekirdeklerini kullanma yetkisi verir.

Ubuntu 13.04 eski bir sürüm, LXC kullanmak güvenli mi?

Ubuntu 13.04 (Saucy Salamander) resmi olarak yaşam döngüsünün sonuna ulaşmıştır ve artık güvenlik güncellemeleri almamaktadır. Bu, özellikle internete açık bir VPS için önemli bir güvenlik riski oluşturur. Üretim ortamlarında kullanmanız önerilmez. Bu rehber, belirli bir eski sürümde LXC’yi nasıl kuracağınızı göstermek için hazırlanmıştır. Mümkünse, daha güncel ve desteklenen bir Ubuntu LTS sürümüne (örneğin 18.04, 20.04 veya 22.04) yükseltme yapmanız şiddetle tavsiye edilir. Güncel sürümlerde LXC’nin daha yeni özellikleri ve daha iyi güvenlik entegrasyonları bulunmaktadır.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Mobil sürümden çık