<šablona x-if=visible><šablona x-if=$isMobile()>
Co je LXD?
LXD (vyslovováno „Lex-Dee“) je systémový správce kontejnerů postavený na LXC (Linux Containers), který je v současné době podporován společností Canonical. Cílem LXD je poskytnout zážitek podobný virtuálnímu stroji, ale spíše prostřednictvím kontejnerizace než hardwarové virtualizace. Ve srovnání s Dockerem pro poskytování aplikací nabízí LXD téměř plnou funkčnost operačního systému s dalšími funkcemi, jako jsou snímky, živé migrace a správa úložiště.
Hlavní výhody LXD jsou podpora kontejnerů s vysokou hustotou a výkon, který poskytuje ve srovnání s virtuálními stroji. Počítač s 2 GB RAM může dostatečně podporovat půl tuctu kontejnerů. Kromě toho LXD oficiálně podporuje obrazy kontejnerů hlavních distribucí Linuxu. Můžeme si vybrat distribuci a verzi Linuxu, které se mají spustit v kontejneru.
Tato příručka popisuje, jak nainstalovat a nastavit LXD 3 na Linode a jak nastavit webový server Apache v kontejneru.
Poznámka Pro zjednodušení výraz kontejner se v této příručce používá k popisu kontejnerů systému LXD.
Než začnete
-
Dokončete průvodce Vytvořením výpočetní instance. Vyberte Linode s alespoň 2 GB paměti RAM, například Linode 2 GB. Zadejte distribuci Ubuntu 19.04. Můžete zadat jinou distribuci Linuxu, pokud existuje podpora balíčků snap (snapd); Další podrobnosti naleznete v části Další informace.
-
Při aktualizaci systému postupujte podle našeho průvodce nastavením a zabezpečením výpočetní instance. Můžete také chtít nastavit časové pásmo, nakonfigurovat název hostitele, vytvořit omezený uživatelský účet a posílit přístup SSH.
Konfigurace podpory balíčků Snap
LXD je k dispozici jako balíček Debianu ve verzích Ubuntu s dlouhodobou podporou (LTS), jako je Ubuntu 18.04 LTS. Pro ostatní verze Ubuntu a dalších distribucí je LXD k dispozici jako balíček snap. Balíčky Snap jsou univerzální balíčky, protože existuje jeden soubor balíčku, který funguje na všech podporovaných distribucích Linuxu. Další podrobnosti o tom, co je balíček snap, jaké distribuce Linuxu jsou podporovány a jak jej nastavit, najdete v části Další informace.
-
Ověřte, zda je správně nainstalována podpora uchopení. Následující příkaz buď ukazuje, že nejsou nainstalovány žádné balíčky snap, nebo že některé jsou.
snap list
No snaps are installed yet. Try 'snap install hello-world'.
-
Zobrazit podrobnosti o balíčku snapů LXD
lxd
. Níže uvedený výstup ukazuje, že v současné době je nejnovější verzí LXD3.12
ve výchozístable
kanál. Tento kanál je často aktualizován o nové funkce. Existují také další kanály, jako je3.0/stable
kanál, který má verzi LTS LXD (podporovanou spolu s Ubuntu 18.04, do roku 2023) a2.0/stable
kanál (podporovaný spolu s Ubuntu 16.04, do roku 2021). Budeme používat nejnovější verzi LXD z výchozístable
kanál.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 -
-
Nainstalujte
lxd
snap balíček. Spuštěním následujícího příkazu nainstalujte balíček snap pro LXD.sudo snap install lxd
lxd 3.12 from Canonical✓ installed
Můžete ověřit, že byl balíček snap nainstalován spuštěním snap list
znovu. core
snap balíček je nezbytným předpokladem pro jakýkoli systém s podporou balíčků snap. Když nainstalujete svůj první balíček snap, core
je nainstalován a sdílen mezi všemi ostatními snap balíčky, které se nainstalují v budoucnu.
snap list
Name Version Rev Tracking Publisher Notes
core 16-2.38 6673 stable canonical✓ core
lxd 3.12 10601 stable canonical✓ -
Inicializovat LXD
-
Přidejte do
lxd
svého uživatele Unix bez oprávnění root skupina:sudo usermod -a -G lxd username
Poznámka Přidáním non-rootového Unixového uživatelského účtu do
lxd
skupinu, můžete spustit jakýkolilxc
příkazy bez předřazenísudo
. Bez tohoto přidání byste museli předřaditsudo
ke každémulxc
příkaz. -
Spusťte novou relaci SSH, aby se předchozí změna projevila. Například se odhlaste a znovu přihlaste.
-
Ověřte dostupné volné místo na disku:
df -h /
V tomto případě je na disku 45 GB volného místa. LXD vyžaduje alespoň 15 GB prostoru pro potřeby úložiště kontejnerů. Přidělíme 15 GB prostoru pro LXD a ponecháme 30 GB volného prostoru pro potřeby serveru.Filesystem Size Used Avail Use% Mounted on /dev/sda 49G 2.0G 45G 5% /
-
Spusťte
lxd init
pro inicializaci LXD:sudo lxd init
Během procesu inicializace budete několikrát vyzváni. Vyberte výchozí hodnoty pro všechny možnosti.
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]:
Webový server Apache s LXD
Tato část vytvoří kontejner, nainstaluje webový server Apache a přidá příslušné iptables
pravidla za účelem odhalení příspěvku 80.
-
Spusťte nový kontejner:
lxc launch ubuntu:18.04 web
-
Aktualizujte seznam balíčků v kontejneru.
lxc exec web -- apt update
-
Nainstalujte Apache do kontejneru LXD.
lxc exec web -- apt install apache2
-
Získejte shell v kontejneru LXD.
lxc exec web -- sudo --user ubuntu --login
-
Upravte výchozí webovou stránku pro Apache tak, aby odkazovala na to, že běží v kontejneru LXD.
sudo nano /var/www/html/index.html
Změňte řádek
It works!
(řádek číslo 224) naIt works inside a LXD container!
. Poté uložte a ukončete. -
Odejděte zpět k hostiteli. V kontejneru jsme provedli všechny potřebné změny.
exit
-
Přidejte proxy zařízení LXD k přesměrování připojení z internetu na port 80 (HTTP) na serveru na port 80 v tomto kontejneru.
sudo lxc config device add web myport80 proxy listen=tcp:0.0.0.0:80 connect=tcp:127.0.0.1:80
Poznámka V nejnovějších verzích LXD je třeba zadat IP adresu (například 127.0.0.1 ) namísto názvu hostitele (například localhost ). Pokud váš kontejner již má proxy zařízení, které používá názvy hostitelů, můžete upravit konfiguraci kontejneru a nahradit ji IP adresami spuštěním lxc config edit web
.
-
Z místního počítače přejděte ve webovém prohlížeči na veřejnou IP adresu svého Linode. Měli byste vidět výchozí stránku Apache:
<šablona x-if=visible><šablona x-if=$isMobile()>
Běžné příkazy LXD
-
Seznam všech kontejnerů:
lxc list
To start your first container, try: lxc launch ubuntu:18.04 +------+-------+------+------+------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +------+-------+------+------+------+-----------+
-
Seznam všech dostupných úložišť obrázků kontejnerů:
lxc remote list
Úložiště+-----------------+------------------------------------------+---------------+-------------+--------+--------+ | 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
obsahuje obrázky kontejnerů verzí Ubuntu.images
úložiště obsahuje obrazy kontejnerů velkého počtu různých distribucí Linuxu.ubuntu-daily
má denní obrázky kontejnerů, které se mají použít pro testovací účely.local
úložiště je server LXD, který jsme právě nainstalovali. Není veřejný a lze jej použít k ukládání vlastních obrázků kontejnerů. -
Seznam všech dostupných obrázků kontejnerů z úložiště:
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) | +------------------+--------------+--------+-----------------------------------------------+---------+----------+-------------------------------+ .....................................................................
Poznámka První dva sloupce pro alias a otisk poskytují identifikátor, který lze použít k určení obrázku kontejneru při jeho spouštění.
Výstupní fragment zobrazuje obrázky kontejnerů Ubuntu verze 18.04 LTS, 18.10 a 19.04. Při vytváření kontejneru stačí zadat krátký alias. Napříkladubuntu:b
znamená, že úložiště jeubuntu
a obrázek kontejneru má krátký aliasb
(pro bionic , kódové označení Ubuntu 18.04 LTS). -
Získejte další informace o obrázku kontejneru:
lxc image info ubuntu:b
Výstup zobrazuje podrobnosti o obrázku kontejneru včetně všech dostupných aliasů. Pro Ubuntu 18.04 LTS můžeme zadat buďFingerprint: 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
(probionic
, kódové označení Ubuntu 18.04 LTS) nebo jakýkoli jiný alias. -
Spusťte nový kontejner s názvem
mycontainer
:lxc launch ubuntu:18.04 mycontainer
Creating mycontainer Starting mycontainer
-
Zkontrolujte seznam kontejnerů a ujistěte se, že nový kontejner běží:
lxc list
+-------------+---------+-----------------------+---------------------------+------------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +-------------+---------+-----------------------+---------------------------+------------+-----------+ | mycontainer | RUNNING | 10.142.148.244 (eth0) | fde5:5d27:...:1371 (eth0) | PERSISTENT | 0 | +-------------+---------+-----------------------+---------------------------+------------+-----------+
-
Základní příkazy spouštějte v
mycontainer
:lxc exec mycontainer -- apt update lxc exec mycontainer -- apt upgrade
Poznámka Znaky
--
zadejte příkazlxc
příkaz neanalyzovat žádné další parametry příkazového řádku. -
Otevřete relaci prostředí v rámci
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]:~$
Poznámka
Obrázky kontejneru Ubuntu mají ve výchozím nastavení účet jiného uživatele než root s uživatelským jménem
ubuntu
. Tento účet může používatsudo
a nevyžaduje heslo k provádění administrativních úkolů.sudo
poskytuje přihlášení ke stávajícímu účtuubuntu
. -
Zobrazit protokoly kontejneru:
lxc info mycontainer --show-log
-
Zastavte kontejner:
lxc stop mycontainer
-
Odstraňte nádobu:
lxc delete mycontainer
Poznámka Před smazáním je třeba kontejner zastavit.
Odstraňování problémů
Chyba „unix.socket:connect:připojení odmítnuto“
Když spustíte jakýkoli lxc
příkazu, zobrazí se následující chyba:
lxc list
Error: Get http://unix.socket/1.0: dial unix /var/snap/lxd/common/lxd/unix.socket: connect: connection refused
K tomu dochází, když služba LXD aktuálně není spuštěna. Ve výchozím nastavení je služba LXD spuštěna, jakmile je úspěšně nakonfigurována. Pro konfiguraci LXD viz Inicializace LXD.
Chyba „unix.socket:connect:oprávnění odepřeno“
Když spustíte jakýkoli lxc
příkazu, zobrazí se následující chyba:
lxc list
Error: Get http://unix.socket/1.0: dial unix /var/snap/lxd/common/lxd/unix.socket: connect: permission denied
K tomu dochází, když váš omezený uživatelský účet není členem lxd
nebo jste se neodhlásili a znovu nepřihlásili, takže nové členství ve skupině do lxd
skupina bude aktualizována.
Pokud je váš uživatelský účet ubuntu
, následující příkaz ukazuje, zda jste členem lxd
skupina:
groups ubuntu
ubuntu : ubuntu sudo lxd
V tomto příkladu jsme členy lxd
skupině a musíme se odhlásit a znovu přihlásit. Pokud nejste členem lxd
skupina, viz Inicializace LXD o tom, jak učinit svůj omezený účet členem lxd
skupina.
Další kroky
Pokud plánujete používat jeden web, bude stačit jediné proxy zařízení pro kontejner webu. Pokud plánujete používat více webových stránek, můžete do kontejneru webových stránek nainstalovat virtuální hostitele. Pokud byste místo toho chtěli nastavit více webových stránek na jejich vlastním kontejneru, budete muset nastavit reverzní proxy v kontejneru. V takovém případě by proxy zařízení směrovalo na reverzní proxy kontejner, aby nasměrovalo připojení ke kontejnerům jednotlivých webových stránek.
Další informace
Další informace o tomto tématu můžete získat v následujících zdrojích. Přestože jsou poskytovány v naději, že budou užitečné, vezměte prosím na vědomí, že nemůžeme ručit za přesnost nebo aktuálnost externě hostovaných materiálů.
- Co jsou to snap balíčky
- Instalace snapu
- Úvod LXD
- Série příspěvků na blogu na LXD 2.0
- Komunita podpory LXD
- Vyzkoušejte LXD Online
- Nastavení obráceného proxy serveru NGINX