Container Linux (LXC) adalah teknologi maya yang ringan dan mempunyai pelbagai kegunaan. Ia adalah sebahagian daripada kernel Linux, dan boleh membiarkan anda mencontohi satu atau beberapa distro Linux pada satu host Linux. Fikirkannya sebagai jalan tengah antara chroot dan teknologi virtualisasi penuh seperti VirtualBox, KVM atau Xen. Teknologi yang sama hadir di dunia BSD adalah Penjara FreeBSD.
Sebagai contoh, mesin yang saya tulis di atas adalah komputer riba yang menjalankan Linux Mint 18, yang dikuasakan oleh pemproses Intel Atom, dan mempunyai 2 GB RAM yang sedikit. Namun, saya menjalankan tiga bekas Linux, masing-masing dengan contoh pelayan web Apache yang berjalan, tanpa memukul prestasi yang besar. Ini tidak boleh difikirkan dengan mesin maya tradisional seperti VirtualBox. Jadi, jika anda ingin menjalankan beberapa distro pada sistem Linux anda, Container Linux harus melakukan tugas untuk anda dengan baik.
Memasang dan Mengkonfigurasi Kontena Linux
Kami menyediakan LXC pada Linux Mint 18 64-bit. Arahan pemasangan yang disediakan di sini juga akan berfungsi tidak diubah pada Ubuntu 16.04 dan ke atas. Jika anda menggunakan distro lain, sila rujuk dokumentasi rasmi distro anda jika sesuatu tidak berfungsi seperti yang diharapkan. Satu kebiasaan dengan arahan dan penyelesaian masalah am juga diandaikan.
Prasyarat
Berikut adalah beberapa perkara yang perlu anda tentukan untuk mula menggunakan pelbagai distros:
1. Pasang perisian LXC dan lain-lain prasyarat menggunakan:
[sourcecode] sudo apt pasang lxc lxc-templates uidmap [/ sourcecode]
2. Sekarang anda perlu mengkonfigurasi profil anda . Masukkan arahan berikut untuk menetapkannya:
[sourcecode] mkdir -p ~ / .config / lxc
echo "lxc.id_map = u 0 100000 65536" & amp; amp; gt; ~ / .config / lxc / default.conf
echo "lxc.id_map = g 0 100000 65536" & amp; amp; gt; & amp; amp; gt; ~ / .config / lxc / default.conf
echo "lxc.network.type = veth" & amp; amp; gt; & amp; amp; gt; ~ / .config / lxc / default.conf
echo "lxc.network.link = lxcbr0" & amp; amp; gt; & amp; amp; gt; ~ / .config / lxc / default.conf
echo "$ USER veth lxcbr0 2" | sudo tee -a / etc / lxc / lxc-usernet [/ sourcecode]
3. Kemudian, anda perlu menyediakan kebenaran pengguna seperti berikut:
[sourcecode] sudo usermod -add-subuids 100000-165536 $ USER
sudo usermod -add-subgids 100000-165536 $ USER
sudo cgm buat semua pengguna
sudo cgm chown semua pengguna $ (id -u) $ (id -g)
cgm menggerakkan semua pengguna $$ [/ sourcecode]
Menyediakan Container anda
Sekarang bahawa anda mempunyai LXC Container dipasang bersama dengan perisian prasyarat lain, berikut adalah langkah-langkah untuk menetapkan Container:
1. Dalam contoh ini, kami akan menubuhkan sebuah bekas Ubuntu, bernama ubu1
. Untuk melakukannya, laksanakan perintah berikut:
[sourcecode] lxc-create -template download -name ubu1 [/ sourcecode]
2. Di sini, parameter-parameter itu memberitahu lxc untuk memuat turun imej yang telah dikonfigurasi dari internet, manakala parameter nama-nama menentukan nama bekas - ubu1
dalam kes ini. Anda boleh menggunakan mana-mana nama yang anda suka.
3. Anda kini akan melihat senarai imej distro yang disokong :
4. Masukkan spesifikasi taburan yang ingin anda pasang. Saya akan memasang versi 64-bit Ubuntu 16.04 (codename xenial) di sini:
5. Jika anda ingin memasang imej bukan secara interaktif, arahan berikut mencapai hasil yang sama seperti di atas:
[sourcecode] lxc-create -t download -n ubu1 - -dist ubuntu -release xenial -arch amd64 [/ sourcecode]
6. LXC kini akan memuat turun dan memasang gambar xenial Ubuntu yang minimum pada sistem tuan rumah anda. Muat turun dan pemasangan mungkin mengambil sedikit masa bergantung pada sambungan internet anda dan kelajuan PC anda. Selepas pemasangan, anda akan melihat skrin seperti ini:
Anda kini bersedia menggunakan bekas Ubuntu anda yang baru.
Menggunakan Multiple Distros dengan Container Linux
Bermula Up The Container
Mula kontena anda menggunakan perintah lxc-start
:
[sourcecode] lxc-start -n ubu1 -d [/ sourcecode]
Di sini, parameter -n
menentukan nama kontena yang anda ingin mulakan ( ubu1
dalam kes ini), dan parameter -d
menjadikannya berjalan di latar belakang .
Anda boleh mengesahkan bahawa bekas dimulakan dengan menggunakan perintah lxc-ls
:
[sourcecode] lxc-ls -f [/ sourcecode]
Parameter -f
membolehkan laporan mewah . Di sini, anda dapat melihat bahawa saya mempunyai dua bekas - satu Debian (berhenti) dan satu Ubuntu (berjalan).
Mengakses dan Menggunakan Container Anda
Anda boleh mengakses konsol bekas menggunakan perintah lxc-attach
:
[sourcecode] lxc-attach -n ubu1 [/ sourcecode]
Anda sekarang akan mempunyai shell root pada bekas anda. Disarankan agar anda menyediakan kata laluan untuk pengguna root, dan buat akaun pengguna biasa :
[sourcecode] passwd
adduser beebom [/ sourcecode]
Sudah tentu, gantikan beebom dengan nama pengguna yang anda mahukan. Anda kemudian boleh memasang perisian dan konfigurasikan bekas anda seperti yang anda lakukan pada sistem biasa. Sebagai contoh, dalam bekas Debian atau Ubuntu:
[sourcecode] apt install wget openssh-server htop tmux nano iptables [/ sourcecode]
Menghentikan Kontena Anda
Setelah selesai bermain dengan bekas, sama ada menggunakan perintah exit
untuk kembali ke sistem tuan rumah . Sekarang gunakan arahan lxc-stop
untuk menghentikan bekas anda :
[sourcecode] lxc-stop -n ubu1 [/ sourcecode]
Ini akan menjadikan kontena ditutup dengan bersih dan ia tidak akan mengambil apa-apa lagi sumber dalam sistem anda, kecuali ruang cakera.
Cloning dan Snapshots
Clon
Sebaik sahaja anda memasang program dalam bekas dan dikonfigurasikan mengikut keinginan anda, anda mungkin mahu membuat satu atau beberapa salinannya untuk memudahkan peruntukan. Anda boleh melakukan ini dengan membuat klon, yang merupakan replika tepat bekas.
Sebagai contoh, untuk membuat klon wadah ubu1
(mari kita panggil ubu2
), mula-mula hentikan bekas menggunakan lxc-stop
, kemudian gunakan perintah lxc-copy
:
[sourcecode] lxc-stop -n ubu
lxc-copy -n ubu1 -N ubu2 [/ sourcecode]
Di sini, pilihan -n menentukan bekas sumber, dan pilihan -N menentukan nama klon tersebut . Untuk mengesahkan bahawa bekas itu diklon, gunakan arahan lxc-ls
:
Syot kilat
Katakan anda akan membuat beberapa kemungkinan berbahaya atau sukar untuk pulih dari perubahan kepada bekas, seperti mengkonfigurasi semula pelayan web. Untuk meminimumkan kerosakan, anda boleh membuat tangkapan bekas sebelum membuat perubahan sedemikian. Sekiranya berlaku sesuatu yang tidak kena semasa konfigurasi, anda boleh menghentikan bekas dan memulihkannya ke keadaan kerja sebelum ini dengan memulihkan tangkapan gambar.
Untuk membuat snapshot, mula-mula berhenti bekas :
[sourcecode] lxc-stop -n ubu1 [/ sourcecode]
Kemudian, buat snapshot menggunakan perintah lxc-snapshot
:
[sourcecode] lxc-snapshot -n ubu1 [/ sourcecode]
Ini mewujudkan snapshot yang dipanggil snap0
. Sebarang tangkapan gambar yang anda buat dengan menggunakan arahan ini akan dipanggil snap1, snap2, dll.
Selepas ini, anda boleh memulakan bekas, dan buat perubahan yang anda mahu. Jika pada bila-bila masa anda mahu kembali ke petikan yang anda buat, hentikan bekas dan gunakan arahan lxc-snapshot
dengan parameter -r
untuk memulihkan tangkapan gambar :
[sourcecode] lxc-snapshot -r snap0 -n ubu1 [/ sourcecode]
Ini akan mengembalikan snap0
snapshot ke ubu1
.
Kontena mula automatik pada Boot
Anda boleh membuat bekas, sebagai contoh, bekas pelayan web, bermula secara automatik apabila anda boot sistem anda. Untuk melakukan ini, pergi ke fail konfigurasi bekas, terletak di $HOME/.local/share/lxc//config
, dan tambahkan baris berikut :
[sourcecode] lxc.start.auto = 1
lxc.start.delay = 5 [/ sourcecode]
Baris pertama menentukan bahawa bekas harus dimulakan pada boot. Yang kedua memberitahu sistem untuk menunggu 5 saat sebelum memulakan kontena seterusnya, jika ada.
Penyelesaian masalah
Sekiranya anda menghadapi masalah untuk memulakan kontena, perkara pertama yang perlu dilakukan ialah menjalankan perintah lxc-start
dalam mode Foreground . Sebagai contoh:
[sourcecode] lxc-start -n ubu1 -F [/ sourcecode]
Ini akan menunjukkan kepada anda kesilapan pada konsol semasa, yang sangat berguna dalam mengenal pasti sifat masalah.
Masalah Dengan Menjalankan Pelbagai Pelbagai Secara Serentak
Sekiranya anda cuba menjalankan pelbagai bekas sekaligus, anda mungkin melihat ralat seperti "Kuota dicapai", atau "gagal untuk membuat rangkaian yang dikonfigurasikan". Ini kerana anda menjalankan lebih banyak antaramuka rangkaian daripada yang diperuntukkan kepada anda. Anda boleh meningkatkan jumlah jambatan rangkaian yang dapat dijalankan pengguna dengan mengubah /etc/lxc/lxc-usernet
sebagai root . Mungkin kelihatan seperti ini:
[sourcecode] # USERNAME JENIS JENIS TEMA
beebom veth lxcbr0 5 [/ sourcecode]
Anda boleh menukar nombor pada akhir (5 dalam contoh ini), ke nombor yang lebih besar seperti 10. Ini akan membolehkan anda menjalankan sehingga 10 bekas sekaligus.
Penggunaan Lain daripada Container Linux
Bekas Linux mempunyai pelbagai kegunaan. Anda boleh menggunakannya sebagai kotak ujian ringan, contohnya, untuk menguji pelbagai konfigurasi pelayan web atau pangkalan data sebelum membuatnya ke pelayan pengeluaran. Satu lagi kes penggunaan adalah untuk menguji bagaimana aplikasi berjalan pada pelbagai versi pelbagai distro.
Anda juga boleh menggunakannya untuk mengasingkan aplikasi yang tidak anda percayai - apa-apa kerosakan aplikasi sebegini akan terhad kepada bekasnya sendiri, dan tidak akan menjejaskan sistem tuan rumah. Sila ambil perhatian bahawa walaupun mungkin untuk menjalankan aplikasi GUI dalam bekas, ia memerlukan sejumlah besar masa dan usaha, dan oleh itu tidak disyorkan. Sekiranya anda ingin menjalankan aplikasi GUI dalam kotak pasir, rujuk artikel kami tentang bagaimana aplikasi kotak pasir di Linux.
Jalankan Pelbagai Distros Bersamaan dengan Container Linux
Oleh itu, berakhirnya How-To kami menjalankan pelbagai distro Linux pada satu komputer, tanpa overhead mesin maya bersaiz penuh. Penggunaan teknologi ini hanya terhad oleh kreativiti anda, jadi jangan ragu untuk mencuba dan cari kes-kes penggunaan novel. Sekiranya anda menghadapi masalah untuk menyediakan bekas, jangan ragu untuk bertanya kepada kami di bahagian komen.