GNU/Linux >> Linux Esercitazione >  >> Panels >> Docker

Accedi a un server Web Apache all'interno di un container LXD

Cos'è LXD?

LXD (pronunciato "Lex-Dee") è un gestore di container di sistema basato su LXC (Linux Containers) attualmente supportato da Canonical. L'obiettivo di LXD è fornire un'esperienza simile a una macchina virtuale ma attraverso la containerizzazione anziché la virtualizzazione. Rispetto a Docker per la distribuzione di applicazioni, LXD offre funzionalità OS quasi complete con funzionalità aggiuntive come snapshot, migrazioni live, gestione dell'archiviazione e altro.

I principali vantaggi di LXD sono l'elevata densità di contenitori che può supportare e le prestazioni che offre rispetto alle macchine virtuali. Un computer con 2 GB di RAM può supportare adeguatamente una mezza dozzina di container. Inoltre, LXD supporta ufficialmente le immagini del contenitore delle principali distribuzioni Linux. Possiamo scegliere la distribuzione e la versione Linux da eseguire nel container.

Questa guida spiega come configurare un Linode per funzionare con LXD, come funziona in pratica LXD e come risolvere i problemi comuni.

Nota Per semplicità, il termine contenitore viene utilizzato in questa guida per descrivere i contenitori LXD.

Prima di iniziare

  1. Se non l'hai già fatto, crea un account Linode e un'istanza di calcolo. Consulta le nostre guide Introduzione a Linode e Creazione di un'istanza di calcolo.

  2. Segui la nostra guida alla configurazione e alla protezione di un'istanza di calcolo per aggiornare il tuo sistema. Potresti anche voler impostare il fuso orario, configurare il tuo nome host, creare un account utente limitato e rafforzare l'accesso SSH.

Monta volume di archiviazione

Quando configuri LXD, puoi archiviare i dati del contenitore in un volume esterno (come un volume di archiviazione a blocchi) o in un disco montato sul tuo Linode.

Blocca volume di archiviazione

  1. Segui la guida Come utilizzare l'archiviazione a blocchi con il tuo Linode e crea un volume di archiviazione a blocchi con dimensioni almeno 20 GB e allegalo al tuo Linode. Prendi nota del nome del dispositivo e del percorso del volume.

    Attenzione Non formatta il volume e non aggiungerlo a /etc/fstab .

  2. Modifica il tuo profilo di configurazione e in Impostazioni di avvio seleziona GRUB 2 come il tuo kernel. Per ulteriori informazioni, vedere Eseguire un kernel fornito dalla distribuzione su un linode KVM.

  3. Riavvia il tuo Linode da Linode Manager.

Disco

  1. In Linode Manager, trova i Dischi sezione e fai clic su Crea un nuovo disco .

    Nota Se il disco di distribuzione del tuo Linode ha già il 100% dello spazio disponibile su disco allocato, dovrai ridimensionare il disco prima di poter creare un disco di archiviazione. Per ulteriori informazioni, vedere Ridimensionamento di un disco.
  2. Modifica il profilo di configurazione del tuo Linode. In Blocca assegnazione dispositivo , assegna il tuo nuovo disco a /dev/sdc . Prendi nota di questo percorso, di cui avrai bisogno durante la configurazione di LXD nella sezione successiva.

  3. In Impostazioni di avvio seleziona GRUB 2 come kernel.

  4. Riavvia il tuo Linode da Linode Manager.

Inizializza LXD

  1. Installa i pacchetti lxd e zfsutils-linux :

    sudo apt install lxd zfsutils-linux
    
  2. Aggiungi il tuo utente Unix a lxd gruppo:

    sudo usermod -a -G lxd username
    
  3. Avvia una nuova sessione SSH per rendere effettiva questa modifica:

  4. Esegui lxd init per inizializzare LXD:

    sudo lxd init
    

    Ti verrà richiesto più volte durante il processo di inizializzazione. Scegli le impostazioni predefinite per tutte le opzioni tranne Use existing block device? Per questa opzione, seleziona e quindi inserisci il percorso del volume di archiviazione aggiunto nella sezione precedente.

Comandi LXD

  1. Elenca tutti i contenitori:

    lxc list
    
    Generating a client certificate. This may take a minute...
    If this is your first time using LXD, you should also run: sudo lxd init
    To start your first container, try: lxc launch ubuntu:16.04
    
    +------+-------+------+------+------+-----------+
    | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
    +------+-------+------+------+------+-----------+
  2. Elenca tutte le immagini del contenitore disponibili:

    lxc image list images:
    
    +---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+
    |              ALIAS              | FINGERPRINT  | PUBLIC |               DESCRIPTION                |  ARCH   |   SIZE   |          UPLOAD DATE          |
    +---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+
    | alpine/3.4 (3 more)             | 39a3bf44c9d8 | yes    | Alpine 3.4 amd64 (20180126_17:50)        | x86_64  | 2.04MB   | Jan 26, 2018 at 12:00am (UTC) |
    +---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+
    | alpine/3.4/armhf (1 more)       | 9fe7c201924c | yes    | Alpine 3.4 armhf (20170111_20:27)        | armv7l  | 1.58MB   | Jan 11, 2017 at 12:00am (UTC) |
    +---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+
    | alpine/3.4/i386 (1 more)        | d39f2f2ba547 | yes    | Alpine 3.4 i386 (20180126_17:50)         | i686    | 1.88MB   | Jan 26, 2018 at 12:00am (UTC) |
    +---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+
    | alpine/3.5 (3 more)             | 5533a5247551 | yes    | Alpine 3.5 amd64 (20180126_17:50)        | x86_64  | 1.70MB   | Jan 26, 2018 at 12:00am (UTC) |
    +---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+
    | alpine/3.5/i386 (1 more)        | 5e93d5f4cae1 | yes    | Alpine 3.5 i386 (20180126_17:50)         | i686    | 1.73MB   | Jan 26, 2018 at 12:00am (UTC) |
    +---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+
    | alpine/3.6 (3 more)             | 5010616d9a24 | yes    | Alpine 3.6 amd64 (20180126_17:50)        | x86_64  | 1.73MB   | Jan 26, 2018 at 12:00am (UTC) |
    +---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+
    .....................................................................
    Nota Le prime due colonne per l'alias e l'impronta digitale forniscono un identificatore che può essere utilizzato per specificare l'immagine del contenitore all'avvio.
  3. Avvia un nuovo container con il nome mycontainer :

    lxc launch ubuntu:16.04 mycontainer
    
    Creating mycontainer
    Starting mycontainer
  4. Controlla l'elenco dei contenitori per assicurarti che il nuovo contenitore sia in esecuzione:

    lxc list
    
    +-------------+---------+-----------------------+---------------------------+------------+-----------+
    |    NAME     |  STATE  |         IPV4          |          IPV6             |    TYPE    | SNAPSHOTS |
    +-------------+---------+-----------------------+---------------------------+------------+-----------+
    | mycontainer | RUNNING | 10.142.148.244 (eth0) | fde5:5d27:...:1371 (eth0) | PERSISTENT | 0         |
    +-------------+---------+-----------------------+---------------------------+------------+-----------+
  5. Esegui i comandi di base in mycontainer :

    lxc exec mycontainer -- apt update
    lxc exec mycontainer -- apt upgrade
    
    Nota I caratteri -- istruire il lxc comando di non analizzare altri parametri della riga di comando.
  6. Apri una sessione di shell all'interno di 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]:~$
    Nota

    Le immagini del contenitore di Ubuntu hanno per impostazione predefinita un account non root con nome utente ubuntu . Questo account può utilizzare sudo e non richiede una password per eseguire attività amministrative.

    Il sudo Il comando fornisce un accesso all'account esistente ubuntu .

  7. Visualizza i log del contenitore:

    lxc info mycontainer --show-log
    
  8. Ferma il contenitore:

    lxc stop mycontainer
    
  9. Rimuovere il contenitore:

    lxc delete mycontainer
    

Server Web Apache con LXD

Questa sezione creerà un container, installerà il server Web Apache e aggiungerà gli iptables appropriati regole per esporre il post 80.

  1. Avvia un nuovo contenitore:

    lxc launch ubuntu:16.04 web
    
  2. Aggiorna l'elenco dei pacchetti nel contenitore.

    lxc exec web -- apt update
    
  3. Installa Apache nel contenitore LXD.

    lxc exec web -- apt install apache2
    
  4. Aggiungi iptables regola per esporre la porta 80. Quando qualcuno si connette alla porta 80 tramite l'indirizzo IP pubblico, questa regola lo reindirizza alla porta 80 del container.

    Dovrai sostituire your_public_ip e your_container_ip rispettivamente con l'IP pubblico e l'IP del contenitore in questo comando.

    PORT=80 PUBLIC_IP=your_public_ip CONTAINER_IP=your_container_ip sudo -E bash -c 'iptables -t nat -I PREROUTING -i eth0 -p TCP -d $PUBLIC_IP --dport $PORT -j DNAT --to-destination $CONTAINER_IP:$PORT -m comment --comment "forward to the Apache2 container"'
    
  5. Crea iptables la regola persiste al riavvio installando iptables-persistent . Quando viene richiesto di salvare le regole IPv4 e IPv6, fai clic su per salvarli.

    sudo apt install iptables-persistent
    
  6. Dal tuo computer locale, vai all'indirizzo IP pubblico del tuo Linode in un browser web. Dovresti vedere la pagina predefinita di Apache:

Passaggi successivi

Se prevedi di utilizzare un solo sito web, allora un singolo iptables regola per il contenitore del sito Web sarà sufficiente. Se prevedi di utilizzare più siti Web, dovrai installare un server Web come NGINX e configurare un proxy inverso in un container. Gli iptables la regola verrebbe quindi reindirizzata a questo contenitore.

Maggiori informazioni

Si consiglia di consultare le seguenti risorse per ulteriori informazioni su questo argomento. Sebbene questi siano forniti nella speranza che possano essere utili, tieni presente che non possiamo garantire l'accuratezza o la tempestività dei materiali ospitati esternamente.

  • Presentazione LXD
  • Serie di post di blog su LXD 2.0
  • Comunità di supporto LXD
  • Prova LXD Online

Docker
  1. Come configurare un server web Apache

  2. Installa il server web Apache CentOS 6 / RHEL 6

  3. Installa il server Web Apache HTTPD su Fedora 18

  4. Installa il server web Apache su openSUSE 12

  5. Installa Apache Web Server su CentOS 8 - Procedura passo passo per farlo?

Come installare il server Web Apache su CentOS 8

Come ospitare un sito Web su un server Web Apache

Proteggi il tuo server Web Apache Best Practice

Come installare il server Web Apache su Debian 11

Come installare Apache Web Server su Ubuntu 18.04

Come ottimizzare il server Web Apache?