LXC Containers adalah cara yang sangat cepat untuk membuat lingkungan virtual psuedo.
Pada artikel LXC sebelumnya, kami menjelaskan cara menginstal dan mengkonfigurasi wadah linux LXC.
Dalam tutorial ini, kami akan menjelaskan cara membuat container Linux baru, memulai container, dan login ke konsol virtual LXC untuk menggunakan container baru.
Untuk demonstrasi, kami akan membuat wadah virtual CentOS LXC dalam tutorial ini, tetapi Anda dapat membuat wadah virtual untuk hampir semua distro Linux yang Anda inginkan.
1. Template Kontainer LXC
Linux Containers LXC secara default menyediakan template container untuk beberapa distro linux populer. Berikut ini adalah beberapa template LXC yang dapat langsung Anda gunakan.
- CentOS
- Ubuntu
- Fedora
- OpenSUSE
- Gentoo
- Debian
- Oracle Linux
- ArchLinux
Semua template LXC yang tersedia berada di bawah direktori /usr/local/share/lxc/templates.
# ls -1 /usr/local/share/lxc/templates lxc-alpine lxc-altlinux lxc-archlinux lxc-busybox lxc-centos lxc-cirros lxc-debian lxc-download lxc-fedora lxc-gentoo lxc-openmandriva lxc-opensuse lxc-oracle lxc-plamo lxc-sshd lxc-ubuntu lxc-ubuntu-cloud
2. Buat Wadah menggunakan lxc-create
Untuk membuat container, gunakan perintah lxc-create seperti yang ditunjukkan di bawah ini.
Pada perintah berikut:
- –n opsi menunjukkan nama wadah
- –t opsi menunjukkan templat yang digunakan untuk membuat wadah. Dalam contoh ini, kami menggunakan template lxc-centos untuk membuat wadah CentOS.
Dalam contoh ini, ini akan membuat wadah CentOS dengan instalasi minimal centos.
Ini akan mengunduh semua paket yang diperlukan untuk menjalankan CentOS minimal (misalnya, sekitar 140 paket), dan menginstalnya sebagai bagian dari wadah MyCentOSContainer1
# lxc-create -n MyCentOSContainer1 -t /usr/local/share/lxc/templates/lxc-centos /usr/local/share/lxc/templates/lxc-centos Host CPE ID from /etc/system-release-cpe: cpe:/o:centos:linux:6:GA dnsdomainname: Unknown host Checking cache download in /usr/local/var/cache/lxc/centos/x86_64/6/rootfs ... Downloading centos minimal ... ... ... Installing : libgcc-4.4.7-16.el6.x86_64 1/142 Installing : setup-2.8.14-20.el6_4.1.noarch 2/142 Installing : filesystem-2.4.30-3.el6.x86_64 3/142 ... Verifying : gzip-1.3.12-22.el6.x86_64 139/142 Verifying : mingetty-1.08-5.el6.x86_64 140/142 Verifying : libxml2-2.7.6-20.el6_7.1.x86_64 141/142 Verifying : 1:findutils-4.4.2-6.el6.x86_64 142/142 ... Download complete. Copy /usr/local/var/cache/lxc/centos/x86_64/6/rootfs to /usr/local/var/lib/lxc/MyCentOSContainer1/rootfs ... Copying rootfs to /usr/local/var/lib/lxc/MyCentOSContainer1/rootfs ...
3. Kata Sandi Root untuk Wadah LXC
Kata sandi root untuk wadah LXC disimpan di bawah:/usr/local/var/lib/lxc/{container-name}/tmp_root_pass
Jadi, pada contoh di atas, untuk wadah LXC yang baru saja kita buat, kata sandi root sementara ada di bawah ini:
# cat /usr/local/var/lib/lxc/MyCentOSContainer1/tmp_root_pass Root-MyCentOSContainer1-pf7qMB
Anda dapat mengubah kata sandi root container Anda kapan saja, meskipun container Anda dimatikan dengan menggunakan chroot dari host kontrol seperti yang ditunjukkan di bawah ini.
# chroot /usr/local/var/lib/lxc/MyCentOSContainer1/rootfs passwd Changing password for user root. New password: Retype new password: passwd: all authentication tokens updated successfully.
4. Mulai LXC Linux Container menggunakan lxc-start
Setelah wadah dibuat, gunakan lxc-start seperti yang ditunjukkan di bawah ini untuk memulai wadah Anda.
# lxc-start -n MyCentOSContainer1 lxc-start: cgfs.c: handle_cgroup_settings: 2077 Device or resource busy - failed to set memory.use_hierarchy to 1; continuing CentOS release 6.6 (Final) Kernel 2.6.32-431.el6.x86_64 on an x86_64 MyCentOSContainer1 login: init: rcS main process (8) killed by TERM signal Entering non-interactive startup Bringing up loopback interface: [ OK ] Bringing up interface eth0: Determining IP information for eth0... done. [ OK ] Starting system logger: [ OK ] Mounting filesystems: [ OK ] Generating SSH2 RSA host key: [ OK ] Generating SSH1 RSA host key: [ OK ] Generating SSH2 DSA host key: [ OK ] Starting sshd: [ OK ] CentOS release 6.6 (Final) Kernel 2.6.32-431.el6.x86_64 on an x86_64 MyCentOSContainer1 login:
Jika Anda mendapatkan pesan kesalahan “container failed to start” berikut, berarti ada yang salah dengan konfigurasi Anda.
# lxc-start -n MyCentOSContainer1 lxc-start: lxc_start.c: main: 344 The container failed to start. lxc-start: lxc_start.c: main: 346 To get more details, run the container in foreground mode. lxc-start: lxc_start.c: main: 348 Additional information can be obtained by setting the --logfile and --logpriority options.
Untuk mengetahui dengan tepat apa yang salah dengan konfigurasi Anda, jalankan wadah LXC di latar depan menggunakan opsi -F seperti yang ditunjukkan di bawah ini.
Jika Anda mendapatkan pesan kesalahan berikut, "gagal melampirkan ke jembatan", "gagal membuat netdev", "gagal membuat jaringan", maka adaptor jembatan tidak dikonfigurasi dengan benar di sistem Anda.
Periksa pengaturan ifcfg-br0 yang kami sebutkan di artikel penyiapan LXC Linux Container kami sebelumnya, untuk memastikan Anda memiliki pengaturan konfigurasi bridge dengan benar dan berfungsi.
# lxc-start -F -n MyCentOSContainer1 lxc-start: conf.c: instantiate_veth: 2796 failed to attach 'veth8VPW29' to the bridge 'lxcbr0': Operation not permitted lxc-start: conf.c: lxc_create_network: 3079 failed to create netdev lxc-start: start.c: lxc_spawn: 935 failed to create the network lxc-start: start.c: __lxc_start: 1192 failed to spawn 'MyCentOSContainer1' lxc-start: lxc_start.c: main: 344 The container failed to start. lxc-start: lxc_start.c: main: 348 Additional information can be obtained by setting the --logfile and --logpriority options.
5. Lihat Info Penampung menggunakan lxc-info
Untuk menampilkan informasi rinci tentang wadah Anda, gunakan perintah lxc-info seperti yang ditunjukkan di bawah ini.
# lxc-info -n MyCentOSContainer1 Name: MyCentOSContainer1 State: RUNNING PID: 7696 IP: 192.168.100.101 CPU use: 1.61 seconds BlkIO use: 32.00 KiB Memory use: 2.63 MiB Link: vethLNI1UH TX bytes: 1.98 KiB RX bytes: 46.08 KiB Total bytes: 48.06 KiB
6. Hentikan LXC Linux Container menggunakan lxc-stop
Untuk menghentikan wadah linux LXC Anda, gunakan lxc-stop seperti yang ditunjukkan di bawah ini, dan tentukan nama wadah yang ingin Anda hentikan.
# lxc-stop -n MyCentOSContainer1
7. Mengkloning Wadah yang Ada menggunakan lxc-clone
Kloning berguna saat Anda ingin mengambil snapshot dari container lama sebelum Anda membuat perubahan apa pun pada konfigurasi pada container. Anda dapat menggunakan ini sebagai metode pencadangan sederhana untuk konfigurasi container.
Kloning wadah dapat dilakukan dengan menggunakan perintah lxc-clone seperti gambar di bawah ini. Dalam hal ini, nama wadah baru adalah MyCentOSContainer2
# lxc-clone -o MyCentOSContainer1 -n MyCentOSContainer2 Created container MyCentOSContainer2 as copy of MyCentOSContainer1
8. Hapus Kontainer yang Ada menggunakan lxc-destory
Untuk menghapus wadah yang ada, gunakan perintah lxc-destroy seperti yang ditunjukkan di bawah ini.
# lxc-destroy -n MyCentOSContainer2
9. Hubungkan ke Konsol Kontainer Linux LXC
Untuk terhubung ke konsol penampung, gunakan perintah lxc-console berikut.
# lxc-console -n MyCentOSContainer1 Connected to tty 1 Type Ctrl+a q to exit the console, Ctrl+a Ctrl+a to enter Ctrl+a itself CentOS release 6.6 (Final) Kernel 2.6.32-431.el6.x86_64 on an x86_64 MyCentOSContainer1 login:
10. Ubah Konfigurasi LXC menggunakan lxc-config
Untuk mengubah konfigurasi LXC, Anda dapat menggunakan perintah lxc-config.
Pertama, gunakan opsi lxc-config -l, yang hanya akan menampilkan semua konfigurasi yang tersedia seperti yang ditunjukkan di bawah ini.
# lxc-config -l lxc.default_config lxc.lxcpath lxc.bdev.lvm.vg lxc.bdev.lvm.thin_pool lxc.bdev.zfs.root lxc.cgroup.use lxc.cgroup.pattern
Selanjutnya, gunakan opsi lxc.default_config seperti yang ditunjukkan di bawah ini untuk melihat informasi tentang setiap file konfigurasi dan parameter terkaitnya.
# lxc-config lxc.default_config /usr/local/etc/lxc/default.conf # cat /usr/local/etc/lxc/default.conf lxc.network.type = veth lxc.network.link = virbr0 lxc.network.flags = up
Perintah berikut akan menampilkan patch LXC tempat semua container disimpan.
# lxc-config lxc.lxcpath /usr/local/var/lib/lxc
Seperti yang kita lihat di bawah, kita melihat dua wadah yang kita buat di bawah direktori ini.
# cd /usr/local/var/lib/lxc # ls MyCentOSContainer1 MyCentOSContainer2
Di bawah direktori container, Anda akan melihat file konfigurasi, yang berisi semua informasi konfigurasi dasar untuk container tertentu seperti yang ditunjukkan di bawah ini.
# cd /usr/local/var/lib/lxc/MyCentOSContainer1 # vi config lxc.network.type = veth lxc.network.link = virbr0 lxc.network.hwaddr = fb:bb:f2:87:e8:17 lxc.network.flags = up lxc.rootfs = /usr/local/var/lib/lxc/MyCentOSContainer1/rootfs lxc.include = /usr/local/share/lxc/config/centos.common.conf lxc.arch = x86_64 lxc.utsname = MyCentOSContainer1