Apa itu LXD?
LXD (diucapkan "Lex-Dee") adalah manajer kontainer sistem yang dibangun di atas LXC (Linux Containers) yang saat ini didukung oleh Canonical. Tujuan LXD adalah untuk memberikan pengalaman yang mirip dengan mesin virtual tetapi melalui containerisasi daripada virtualisasi perangkat keras. Dibandingkan dengan Docker untuk memberikan aplikasi, LXD menawarkan fungsionalitas sistem operasi yang hampir lengkap dengan fitur tambahan seperti snapshot, migrasi langsung, dan manajemen penyimpanan.
Manfaat utama LXD adalah dukungan wadah kepadatan tinggi dan kinerja yang diberikannya dibandingkan dengan mesin virtual. Komputer dengan RAM 2GB cukup dapat mendukung setengah lusin wadah. Selain itu, LXD secara resmi mendukung gambar kontainer dari distribusi Linux utama. Kita dapat memilih distribusi dan versi Linux untuk dijalankan dalam container.
Panduan ini mencakup cara menginstal dan menyiapkan LXD 3 pada Linode dan cara menyiapkan server Web Apache dalam sebuah wadah.
Catatan Untuk mempermudah, istilah wadah digunakan di seluruh panduan ini untuk menjelaskan wadah sistem LXD.
Sebelum Anda Mulai
-
Selesaikan panduan Membuat Instans Komputasi. Pilih Linode dengan memori RAM minimal 2GB, seperti Linode 2GB. Tentukan distribusi Ubuntu 19.04. Anda dapat menentukan distribusi Linux yang berbeda, selama ada dukungan untuk paket snap (snapd); lihat Informasi Lebih Lanjut untuk detail selengkapnya.
-
Ikuti panduan Menyiapkan dan Mengamankan Instans Komputasi untuk memperbarui sistem Anda. Anda mungkin juga ingin mengatur zona waktu, mengkonfigurasi nama host Anda, membuat akun pengguna terbatas, dan memperkuat akses SSH.
Konfigurasi Dukungan Paket Snap
LXD tersedia sebagai paket Debian dalam versi dukungan jangka panjang (LTS) Ubuntu, seperti Ubuntu 18.04 LTS. Untuk versi Ubuntu dan distribusi lainnya, LXD tersedia sebagai paket snap. Paket Snap adalah paket universal karena ada satu file paket yang berfungsi pada semua distribusi Linux yang didukung. Lihat bagian Informasi Lebih Lanjut untuk detail selengkapnya tentang apa itu paket snap, distribusi Linux apa yang didukung, dan cara menyiapkannya.
-
Verifikasi bahwa dukungan snap diinstal dengan benar. Perintah berikut menunjukkan bahwa tidak ada paket snap yang diinstal, atau ada beberapa yang diinstal.
snap list
No snaps are installed yet. Try 'snap install hello-world'.
-
Lihat detail paket snap LXD
lxd
. Output di bawah ini menunjukkan bahwa, saat ini, versi terbaru dari LXD adalah3.12
di defaultstable
saluran. Saluran ini sering diperbarui dengan fitur-fitur baru. Ada juga saluran lain seperti3.0/stable
saluran yang memiliki versi LTS LXD (didukung bersama dengan Ubuntu 18.04, hingga 2023) dan2.0/stable
saluran (didukung bersama dengan Ubuntu 16.04, hingga 2021). Kami akan menggunakan LXD versi terbaru daristable
default saluran.snap info lxd
name: lxd summary: System container manager and API publisher: Canonical✓ contact: https://github.com/lxc/lxd/issues license: Apache-2.0 description: | **LXD is a system container manager** With LXD you can run hundreds of containers of a variety of Linux distributions, apply resource limits, pass in directories, USB devices or GPUs and setup any network and storage you want. LXD containers are lightweight, secure by default and a great alternative to running Linux virtual machines. **Run any Linux distribution you want** Pre-made images are available for Ubuntu, Alpine Linux, ArchLinux, CentOS, Debian, Fedora, Gentoo, OpenSUSE and more. A full list of available images can be [found here](https://images.linuxcontainers.org) Can't find the distribution you want? It's easy to make your own images too, either using our `distrobuilder` tool or by assembling your own image tarball by hand. **Containers at scale** LXD is network aware and all interactions go through a simple REST API, making it possible to remotely interact with containers on remote systems, copying and moving them as you wish. Want to go big? LXD also has built-in clustering support, letting you turn dozens of servers into one big LXD server. **Configuration options** Supported options for the LXD snap (`snap set lxd KEY=VALUE`): - criu.enable: Enable experimental live-migration support [default=false] - daemon.debug: Increases logging to debug level [default=false] - daemon.group: Group of users that can interact with LXD [default=lxd] - ceph.builtin: Use snap-specific ceph configuration [default=false] - openvswitch.builtin: Run a snap-specific OVS daemon [default=false] [Documentation](https://lxd.readthedocs.io) snap-id: J60k4JY0HppjwOjW8dZdYc8obXKxujRu channels: stable: 3.12 2019-04-16 (10601) 56MB - candidate: 3.12 2019-04-26 (10655) 56MB - beta: ↑ edge: git-570aaa1 2019-04-27 (10674) 56MB - 3.0/stable: 3.0.3 2018-11-26 (9663) 53MB - 3.0/candidate: 3.0.3 2019-01-19 (9942) 53MB - 3.0/beta: ↑ 3.0/edge: git-eaa62ce 2019-02-19 (10212) 53MB - 2.0/stable: 2.0.11 2018-07-30 (8023) 28MB - 2.0/candidate: 2.0.11 2018-07-27 (8023) 28MB - 2.0/beta: ↑ 2.0/edge: git-c7c4cc8 2018-10-19 (9257) 26MB -
-
Instal
lxd
paket jepret. Jalankan perintah berikut untuk menginstal paket snap untuk LXD.sudo snap install lxd
lxd 3.12 from Canonical✓ installed
Anda dapat memverifikasi bahwa paket snap telah diinstal dengan menjalankan snap list
lagi. core
paket snap adalah prasyarat untuk sistem apa pun dengan dukungan paket snap. Saat Anda menginstal paket snap pertama Anda, core
diinstal dan dibagikan di antara semua paket snap lainnya yang akan diinstal di masa mendatang.
snap list
Name Version Rev Tracking Publisher Notes
core 16-2.38 6673 stable canonical✓ core
lxd 3.12 10601 stable canonical✓ -
Inisialisasi LXD
-
Tambahkan pengguna Unix non-root Anda ke
lxd
grup:sudo usermod -a -G lxd username
Catatan Dengan menambahkan akun pengguna Unix non-root ke
lxd
grup, Anda dapat menjalankanlxc
perintah tanpa menambahkansudo
. Tanpa tambahan ini, Anda harus menambahkansudo
untuk setiaplxc
perintah. -
Mulai sesi SSH baru agar perubahan sebelumnya diterapkan. Misalnya, logout dan login lagi.
-
Verifikasi ruang disk kosong yang tersedia:
df -h /
Dalam hal ini ada 45GB ruang disk kosong. LXD membutuhkan ruang minimal 15GB untuk kebutuhan penyimpanan container. Kami akan mengalokasikan 15GB ruang untuk LXD, menyisakan 30GB ruang kosong untuk kebutuhan server.Filesystem Size Used Avail Use% Mounted on /dev/sda 49G 2.0G 45G 5% /
-
Jalankan
lxd init
untuk menginisialisasi LXD:sudo lxd init
Anda akan diminta beberapa kali selama proses inisialisasi. Pilih default untuk semua opsi.
Would you like to use LXD clustering? (yes/no) [default=no]: Do you want to configure a new storage pool? (yes/no) [default=yes]: Name of the new storage pool [default=default]: Name of the storage backend to use (btrfs, ceph, dir, lvm, zfs) [default=zfs]: Create a new ZFS pool? (yes/no) [default=yes]: Would you like to use an existing block device? (yes/no) [default=no]: Size in GB of the new loop device (1GB minimum) [default=15GB]: Would you like to connect to a MAAS server? (yes/no) [default=no]: Would you like to create a new local network bridge? (yes/no) [default=yes]: What should the new bridge be called? [default=lxdbr0]: What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: Would you like LXD to be available over the network? (yes/no) [default=no]: Would you like stale cached images to be updated automatically? (yes/no) [default=yes] Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:
Server Web Apache dengan LXD
Bagian ini akan membuat wadah, menginstal server web Apache, dan menambahkan iptables
yang sesuai aturan untuk mengekspos pos 80.
-
Luncurkan wadah baru:
lxc launch ubuntu:18.04 web
-
Perbarui daftar paket dalam wadah.
lxc exec web -- apt update
-
Instal Apache di wadah LXD.
lxc exec web -- apt install apache2
-
Dapatkan cangkang di wadah LXD.
lxc exec web -- sudo --user ubuntu --login
-
Edit halaman web default Apache untuk membuat referensi yang dijalankan di dalam wadah LXD.
sudo nano /var/www/html/index.html
Ubah baris
It works!
(nomor baris 224) keIt works inside a LXD container!
. Kemudian, simpan dan keluar. -
Keluar kembali ke host. Kami telah membuat semua perubahan yang diperlukan pada penampung.
exit
-
Tambahkan perangkat proxy LXD untuk mengalihkan koneksi dari internet ke port 80 (HTTP) di server ke port 80 di container ini.
sudo lxc config device add web myport80 proxy listen=tcp:0.0.0.0:80 connect=tcp:127.0.0.1:80
Catatan Dalam versi LXD terbaru, Anda perlu menentukan alamat IP (seperti 127.0.0.1 ) sebagai ganti nama host (seperti localhost ). Jika container Anda sudah memiliki perangkat proxy yang menggunakan nama host, Anda dapat mengedit konfigurasi container untuk mengganti dengan alamat IP dengan menjalankan lxc config edit web
.
-
Dari komputer lokal Anda, navigasikan ke alamat IP publik Linode Anda di browser web. Anda akan melihat halaman Apache default:
Perintah LXD Umum
-
Daftar semua penampung:
lxc list
To start your first container, try: lxc launch ubuntu:18.04 +------+-------+------+------+------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +------+-------+------+------+------+-----------+
-
Buat daftar semua repositori gambar kontainer yang tersedia:
lxc remote list
Repositori+-----------------+------------------------------------------+---------------+-------------+--------+--------+ | NAME | URL | PROTOCOL | AUTH TYPE | PUBLIC | STATIC | +-----------------+------------------------------------------+---------------+-------------+--------+--------+ | images | https://images.linuxcontainers.org | simplestreams | none | YES | NO | +-----------------+------------------------------------------+---------------+-------------+--------+--------+ | local (default) | unix:// | lxd | file access | NO | YES | +-----------------+------------------------------------------+---------------+-------------+--------+--------+ | ubuntu | https://cloud-images.ubuntu.com/releases | simplestreams | none | YES | YES | +-----------------+------------------------------------------+---------------+-------------+--------+--------+ | ubuntu-daily | https://cloud-images.ubuntu.com/daily | simplestreams | none | YES | YES | +-----------------+------------------------------------------+---------------+-------------+--------+--------+
ubuntu
memiliki gambar wadah versi Ubuntu.images
repositori memiliki gambar kontainer dari sejumlah besar distribusi Linux yang berbeda.ubuntu-daily
memiliki gambar kontainer harian yang akan digunakan untuk tujuan pengujian.local
repositori adalah server LXD yang baru saja kita instal. Ini tidak bersifat publik dan dapat digunakan untuk menyimpan gambar kontainer Anda sendiri. -
Daftar semua gambar kontainer yang tersedia dari repositori:
lxc image list ubuntu:
+------------------+--------------+--------+-----------------------------------------------+---------+----------+-------------------------------+ | ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCH | SIZE | UPLOAD DATE | +------------------+--------------+--------+-----------------------------------------------+---------+----------+-------------------------------+ | b (11 more) | 5b72cf46f628 | yes | ubuntu 18.04 LTS amd64 (release) (20190424) | x86_64 | 180.37MB | Apr 24, 2019 at 12:00am (UTC) | +------------------+--------------+--------+-----------------------------------------------+---------+----------+-------------------------------+ | c (5 more) | 4716703f04fc | yes | ubuntu 18.10 amd64 (release) (20190402) | x86_64 | 313.29MB | Apr 2, 2019 at 12:00am (UTC) | +------------------+--------------+--------+-----------------------------------------------+---------+----------+-------------------------------+ | d (5 more) | faef94acf5f9 | yes | ubuntu 19.04 amd64 (release) (20190417) | x86_64 | 322.56MB | Apr 17, 2019 at 12:00am (UTC) | +------------------+--------------+--------+-----------------------------------------------+---------+----------+-------------------------------+ .....................................................................
Catatan Dua kolom pertama untuk alias dan sidik jari memberikan pengenal yang dapat digunakan untuk menentukan gambar wadah saat meluncurkannya.
Cuplikan keluaran menunjukkan gambar penampung versi Ubuntu 18.04 LTS, 18.10, dan 19.04. Saat membuat wadah, kita bisa menentukan alias pendek. Misalnya,ubuntu:b
berarti repositorinya adalahubuntu
dan gambar kontainer memiliki alias pendekb
(untuk bionik , nama kode Ubuntu 18.04 LTS). -
Dapatkan informasi lebih lanjut tentang gambar kontainer:
lxc image info ubuntu:b
Outputnya menunjukkan detail gambar container termasuk semua alias yang tersedia. Untuk Ubuntu 18.04 LTS, kita dapat menentukanFingerprint: 5b72cf46f628b3d60f5d99af48633539b2916993c80fc5a2323d7d841f66afbe Size: 180.37MB Architecture: x86_64 Public: yes Timestamps: Created: 2019/04/24 00:00 UTC Uploaded: 2019/04/24 00:00 UTC Expires: 2023/04/26 00:00 UTC Last used: never Properties: release: bionic version: 18.04 architecture: amd64 label: release serial: 20190424 description: ubuntu 18.04 LTS amd64 (release) (20190424) os: ubuntu Aliases: - 18.04 - 18.04/amd64 - b - b/amd64 - bionic - bionic/amd64 - default - default/amd64 - lts - lts/amd64 - ubuntu - amd64 Cached: no Auto update: disabled
b
(untukbionic
, nama kode Ubuntu 18.04 LTS) atau alias lainnya. -
Luncurkan wadah baru dengan nama
mycontainer
:lxc launch ubuntu:18.04 mycontainer
Creating mycontainer Starting mycontainer
-
Periksa daftar penampung untuk memastikan penampung baru berjalan:
lxc list
+-------------+---------+-----------------------+---------------------------+------------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +-------------+---------+-----------------------+---------------------------+------------+-----------+ | mycontainer | RUNNING | 10.142.148.244 (eth0) | fde5:5d27:...:1371 (eth0) | PERSISTENT | 0 | +-------------+---------+-----------------------+---------------------------+------------+-----------+
-
Jalankan perintah dasar di
mycontainer
:lxc exec mycontainer -- apt update lxc exec mycontainer -- apt upgrade
Catatan Karakter
--
instruksikanlxc
perintah untuk tidak mengurai parameter baris perintah lagi. -
Buka sesi shell di dalam
mycontainer
:lxc exec mycontainer -- sudo --login --user ubuntu
To run a command as administrator (user "root"), use "sudo <command>". See "man sudo_root" for details. [email protected]:~$
Catatan
Gambar wadah Ubuntu secara default memiliki akun non-root dengan nama pengguna
ubuntu
. Akun ini dapat menggunakansudo
dan tidak memerlukan kata sandi untuk melakukan tugas administratif.sudo
perintah menyediakan login ke akun yang adaubuntu
. -
Lihat log kontainer:
lxc info mycontainer --show-log
-
Hentikan wadah:
lxc stop mycontainer
-
Keluarkan wadah:
lxc delete mycontainer
Catatan Sebuah container harus dihentikan sebelum dapat dihapus.
Pemecahan masalah
Kesalahan “unix.socket:connect:koneksi ditolak”
Saat Anda menjalankan lxc
perintah, Anda mendapatkan kesalahan berikut:
lxc list
Error: Get http://unix.socket/1.0: dial unix /var/snap/lxd/common/lxd/unix.socket: connect: connection refused
Ini terjadi ketika layanan LXD sedang tidak berjalan. Secara default, layanan LXD berjalan segera setelah berhasil dikonfigurasi. LihatMenginisialisasi LXD untuk mengonfigurasi LXD.
Kesalahan “unix.socket:connect:izin ditolak”
Saat Anda menjalankan lxc
perintah, Anda mendapatkan kesalahan berikut:
lxc list
Error: Get http://unix.socket/1.0: dial unix /var/snap/lxd/common/lxd/unix.socket: connect: permission denied
Ini terjadi ketika akun pengguna terbatas Anda bukan anggota lxd
grup, atau Anda tidak logout dan login kembali sehingga keanggotaan grup baru menjadi lxd
grup diperbarui.
Jika akun pengguna Anda adalah ubuntu
, perintah berikut menunjukkan apakah Anda adalah anggota lxd
grup:
groups ubuntu
ubuntu : ubuntu sudo lxd
Dalam contoh ini, kami adalah anggota lxd
grup dan kita hanya perlu logout dan login lagi. Jika Anda bukan anggota lxd
grup, lihat Inisialisasi LXD tentang cara membuat akun terbatas Anda menjadi anggota lxd
grup.
Langkah Selanjutnya
Jika Anda berencana untuk menggunakan satu situs web, maka satu perangkat proxy ke wadah situs web sudah cukup. Jika Anda berencana untuk menggunakan beberapa situs web, Anda dapat menginstal host virtual di dalam wadah situs web. Jika sebaliknya Anda ingin menyiapkan beberapa situs web di wadahnya sendiri, maka Anda perlu menyiapkan proxy terbalik di wadah. Dalam hal ini, perangkat proxy akan mengarahkan ke wadah proxy terbalik untuk mengarahkan koneksi ke wadah situs web individu.
Informasi Lebih Lanjut
Anda mungkin ingin berkonsultasi dengan sumber daya berikut untuk informasi tambahan tentang topik ini. Meskipun ini disediakan dengan harapan dapat bermanfaat, harap perhatikan bahwa kami tidak dapat menjamin keakuratan atau ketepatan waktu materi yang dihosting secara eksternal.
- Apa itu paket snap
- Menginstal snapd
- Pengantar LXD
- Seri entri blog di LXD 2.0
- Komunitas dukungan LXD
- Cobalah LXD Daring
- Setelan Proksi Terbalik NGINX