GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Průvodce LXD pro začátečníky:Nastavení webového serveru Apache

<š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

  1. 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.

  2. 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.

  1. 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'.
  2. Zobrazit podrobnosti o balíčku snapů LXD lxd . Níže uvedený výstup ukazuje, že v současné době je nejnovější verzí LXD 3.12 ve výchozí stable kanál. Tento kanál je často aktualizován o nové funkce. Existují také další kanály, jako je 3.0/stable kanál, který má verzi LTS LXD (podporovanou spolu s Ubuntu 18.04, do roku 2023) a 2.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 -
  3. 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

  1. 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ýkoli lxc příkazy bez předřazení sudo . Bez tohoto přidání byste museli předřadit sudo ke každému lxc příkaz.
  2. Spusťte novou relaci SSH, aby se předchozí změna projevila. Například se odhlaste a znovu přihlaste.

  3. Ověřte dostupné volné místo na disku:

    df -h /
    

    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda         49G  2.0G   45G   5% /
    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.

  4. 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.

  1. Spusťte nový kontejner:

    lxc launch ubuntu:18.04 web
    
  2. Aktualizujte seznam balíčků v kontejneru.

    lxc exec web -- apt update
    
  3. Nainstalujte Apache do kontejneru LXD.

    lxc exec web -- apt install apache2
    
  4. Získejte shell v kontejneru LXD.

    lxc exec web -- sudo --user ubuntu --login
    
  5. 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) na It works inside a LXD container! . Poté uložte a ukončete.

  6. Odejděte zpět k hostiteli. V kontejneru jsme provedli všechny potřebné změny.

    exit
    
  7. 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 .
  1. 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
    

    +-----------------+------------------------------------------+---------------+-------------+--------+--------+
    |      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    |
    +-----------------+------------------------------------------+---------------+-------------+--------+--------+
    Úložiště 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říklad ubuntu:b znamená, že úložiště je ubuntu a obrázek kontejneru má krátký alias b (pro bionic , kódové označení Ubuntu 18.04 LTS).

  • Získejte další informace o obrázku kontejneru:

     lxc image info ubuntu:b
    

    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
    Výstup zobrazuje podrobnosti o obrázku kontejneru včetně všech dostupných aliasů. Pro Ubuntu 18.04 LTS můžeme zadat buď b (pro bionic , 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říkaz lxc 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žívat sudo a nevyžaduje heslo k provádění administrativních úkolů.

    sudo poskytuje přihlášení ke stávajícímu účtu ubuntu .

  • 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

Docker
  1. Ladění webového serveru Apache Keepalive

  2. Nainstalujte webový server Apache HTTPD na Fedoru 18

  3. Nainstalujte webový server Apache na openSUSE 12

  1. Jak nakonfigurovat webový server Apache

  2. Nainstalujte webový server Apache na Ubuntu 12.10

  3. Jak nastavit jednoduchý webový server Apache v kontejneru Docker

  1. Nainstalujte webový server Apache CentOS 6 / RHEL 6

  2. Nastavení webového serveru Ubuntu?

  3. Průvodce LXD pro začátečníky:Nastavení reverzního proxy pro hostování více webových stránek