Cara Install dan Deploy Container LXC di Rocky Linux

Masih terkait dengan serial “Strategi Migrasi dan Upgrade Zimbra“. Untuk mengejar timeline, akhirnya diputuskan menggunakan skenario ke-3. Yaitu salin data via Rsync/Rclone. Hasilnya ternyata memuaskan. Rencana awal penggunaan NFS dibatalkan. Semua data full di salin ke server baru.

Sebelum menggunakan LXC, saya coba menggunakan Docker terlebih dahulu. Saya mengalami beberapa kesulitan. Mulai dari dependensi, service yang tidak up, penyesuaian privileged, systemd yang tidak bisa dipanggil, memetakan cgroup, dan yang lainnya. Lalu coba menggunakan Podman. Beberapa bottleneck teratasi. Systemd bisa dipanggil. Namun tetap masih ada beberapa kendala.

Kemudian teringat LXC yang ada di Proxmox. Smooth dan ringan. Karena OS yang digunakan adalah Rocky Linux, akhirnya install LXC pada Rocky Linux.

Hasilnya sesuai ekspektasi. Container yang dideploy berjalan smooth dan ringan. Perintah systemctl berjalan normal. Tidak ada penyesuaian privileged dan yang lainnya. Install dependensi juga normal.

Jika tidak salah ingat, memang ada perbedaan fungsi dari Docker/Podman dengan LXC. Jika Docker/Podman lebih ke sisi level aplikasi, sedangkan LXC lebih ke level OS.

Berikut cara Install dan Deploy Container LXC di Rocky Linux

# Install epel-repo

dnf install epel-release

# Install LXC

dnf install lxc
lxc-checkconfig 
lxc-ls

# Buat network host-only

Karena penggunaannya hanya untuk local only, networknya dibuat dummy

nmcli con add type bridge ifname lxcbr0 con-name lxcbr0
nmcli con modify lxcbr0 ipv4.addresses 10.10.10.1/24 ipv4.method manual
nmcli con up lxcbr0
echo "net.ipv4.ip_forward = 1" | sudo tee /etc/sysctl.d/99-lxc.conf
sudo sysctl -p /etc/sysctl.d/99-lxc.conf

Agar container bisa akses ke internet, atur routing via iptables

iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -j MASQUERADE

# Testing LXC dengan CentOS 7

Flashback ke tulisan sebelumnya “Strategi Migrasi dan Upgrade Zimbra“, OS eksisting yang digunakan oleh klien adalah RHEL/CentOS 7. Jadi tulisan ini masih ada kaitan dengan seri tulisan sebelumnya

Download LXC

cd /srv/
wget -c http://download.proxmox.com/images/system/centos-7-default_20190926_amd64.tar.xz

Jika nama filenya tar.zst, bisa gunakan perintah ini. Pastikan package zstd sudah terinstall

tar -I zstd -xvf nama_file.tar.zst

# Buat LXC dari file tar.gz

cd /var/lib/lxc/
mkdir -p /var/lib/lxc/nama-container/rootfs
sudo tar -xvf /srv/centos-7-default_20190926_amd64.tar.xz -C /var/lib/lxc/nama-container/rootfs --numeric-owner
vi /var/lib/lxc/nama-container/config

Isi dengan isian seperti berikut

# Nama dan Path
lxc.uts.name = nama-container
lxc.arch = amd64

# Diarahkan ke Folder
lxc.rootfs.path = dir:/var/lib/lxc/nama-container/rootfs

# Network (Host-Only Bridge)
lxc.net.0.type = veth
lxc.net.0.link = lxcbr0
lxc.net.0.flags = up
lxc.net.0.ipv4.address = 10.10.10.5/24
lxc.net.0.ipv4.gateway = 10.10.10.1

# TTY dan Console
lxc.tty.max = 0
lxc.autodev = 1

# Struktur: lxc.mount.entry = [sumber di host] [tujuan di container] [tipe] [opsi] 0 0
lxc.mount.entry = /folder-di-host folder-di-lxc none bind,create=dir 0 0

lxc.start.auto = 1
lxc.start.order = 10
lxc.start.delay = 5

Keterangan:
nama-container bisa diganti dengan nama yang diinginkan
– nama folder lokasi (lxc.rootfs.path) lxc sebaiknya sama dengan nama container
– Sesuaikan lxc.mount.entry. /folder-di-host adalah folder di host yang akan dimount di LXC (folder-di-lxc) tanpa / (slash). Misal ingin mount folder /srv di host ke dalam folder /srv/datahost di LXC. Maka isinya “/srv srv/datahost”. Tidak ada tanda / di awal untuk folder di LXC

Ganti owner jadi Root

chown -R root:root /var/lib/lxc/nama-container/

# Test dan start LXC mode daemon

lxc-ls -f
lxc-start -n nama-container -d

Warning: Jika container tidak dapat distart, biasanya kendala terkait dengan cgroups. Jalankan perintah berikut dan reboot

cek kondisi saat ini

cat /proc/cmdline

atau

sudo grubby --info=DEFAULT

Update kernel terkait cgroups

sudo grubby --update-kernel=ALL --args="systemd.unified_cgroup_hierarchy=0"

# Attach container

lxc-attach -n nama-container

Setelah masuk ke dalam container, konfigurasi container agar bisa akses ke internet. Seperti penyesuaian /etc/resolv.conf

Karena container yang digunakan adalah CentOS 7, arahkan repositorynya ke vault “Mengganti Repository CentOS 7 ke Vault Setelah EOL“. Update repo dan testing install package

yum update -y
yum upgrade -y
yum install openssl

Untuk kebutuhan instalasi Zimbra, selebihnya bisa ikuti panduan “Tips Instalasi Zimbra 9 pada CentOS 7“. Untuk keluar dari LXC, cukup ketik exit

Perintah-perintah yang akan sering digunakan

lxc-ls -f  # list container
lxc-start -n centos7 -d # start container dengan nama centos7
lxc-stop -n centos7 # stop container dengan nama centos7
lxc-attach -n centos7 # attach container dengan nama centos7

Silakan dicoba 🙂

Ahmad Imanudin, Tinggal di Bekasi. Bekerja sebagai salah satu staff di PT. Excellent Infotama Kreasindo. Dapat dihubungi pada alamat surel ahmad [at] imanudin.com

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

You might also like
Rclone: Solusi Cepat Salin Data Skala Besar

Rclone: Solusi Cepat Salin Data Skala Besar

Strategi Migrasi dan Upgrade Zimbra

Strategi Migrasi dan Upgrade Zimbra

Konfigurasi Network Routing Table pada Netplan

Konfigurasi Network Routing Table pada Netplan

Stay Connected
Ramadan Challenge : Menghapal Surat Al-Mulk
Membangun Linux Active Directory Dengan Samba4 Pada Redhat/CentOS Part 5 : Konfigurasi Dynamic DNS & Kerberos
Cara Membuat WhatsApp Gateway Sendiri dengan go-whatsapp-web-multidevice
Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Join 1,759 other subscribers
Categories