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

Docker:come usarlo in modo pratico - Parte 3

Parte 3:creazione di un blocco note con contenitori WordPress e DokuWiki

Prefazione

Nella prima parte abbiamo parlato di come funzionano i container docker e si differenziano dalle altre tecnologie di virtualizzazione del software e nella seconda parte abbiamo preparato il nostro sistema per la gestione dei container docker.

In questa parte inizieremo a utilizzare le immagini Docker e creeremo contenitori in modo pratico. In altre parole, creeremo un blocco note personale avanzato basato sul Web che verrà eseguito su DokuWiki o WordPress. Puoi scegliere quello con cui ti senti a tuo agio.

Come eseguire un container Docker

Per prima cosa dobbiamo assicurarci che il motore Docker funzioni come necessario scaricando un'immagine "Hello world" e creando un contenitore da essa.

Ricorda, quando parliamo di un'immagine è lo stato sospeso mentre quando parliamo di container è un'istanza di runtime di un'immagine docker. In un'analogia, di cui abbiamo parlato in una parte precedente, un'immagine docker è come il file ISO di una distribuzione Linux, mentre il container è la sessione live del file ISO come se lo eseguissi da una chiavetta USB.

Per scaricare ed eseguire l'immagine "Hello world" è sufficiente digitare nel terminale

sudo docker run hello-world

Questo comando scarica l'immagine Hello World e la esegue in un contenitore. Quando il contenitore viene eseguito, stampa un messaggio informativo e quindi esce (il che significa che si spegne).

Come controlliamo quante immagini abbiamo nel nostro sistema? Bene, corriamo semplicemente

sudo docker images

Potresti chiederti, come ha fatto il mio sistema a trovare questa immagine di Hello World e da dove viene? Bene, è qui che entra in gioco l'hub Docker.

Introduzione al Docker Hub

Docker Hub è una risorsa centralizzata basata su cloud per il rilevamento delle immagini del contenitore, la creazione di immagini e la distribuzione di tali immagini.
In particolare, Docker Hub fornisce alcune utili caratteristiche e funzioni di cui parleremo più approfonditamente nelle parti successive.

Al momento, ci concentreremo su una funzione e questa è trovare e scaricare un'immagine Docker.

Ricerca di immagini Docker

È possibile cercare un'"immagine Docker pronta per il download e l'esecuzione", semplicemente visitando l'hub Docker online o utilizzando il terminale. Tieni presente che non puoi scaricare un'immagine Docker dall'hub web, ma puoi saperne di più su un'immagine, ad esempio su come viene creata e gestita, ecc.

Quindi, ai fini di questa parte, ci concentreremo sull'utilizzo del modo terminale. Cerchiamo WordPress

sudo docker search wordpress

Come puoi vedere ci sono tonnellate di immagini docker di WordPress, che sono costruite con varie combinazioni (ad es. con o senza inclusione nel database), sono classificate con stelle di popolarità e sono ufficiali (mantenute dalla società docker) o automatizzate (costruite e mantenute da privati). È ovvio che chiunque può creare un account e caricare la propria immagine della finestra mobile personalizzata e ne parleremo in una parte successiva.

Download di un'immagine Docker

Ai fini di questo articolo, utilizzeremo l'ultima build dell'immagine docker di bitnamis, che viene fornita con MySQL preinstallato al suo interno. Quindi scarichiamolo:

sudo docker pull bitnami/wordpress:latest

Una volta eseguito il comando precedente, comunicherà con l'hub Docker, chiederà se esiste un repository chiamato "bitnami", quindi chiede se esiste una build "WordPress" contrassegnata come versione "ultima".

Al momento, abbiamo scaricato un'immagine WordPress e nient'altro. Possiamo procedere ora scaricando un'immagine DokuWiki cercandone una e selezionando quella che ci piace, oppure usando quella che è la seguente

sudo docker pull mprasil/dokuwiki

L'architettura Docker Image

Mentre aspetti il ​​completamento della procedura di download, puoi vedere che un'immagine Docker è un'immagine multistrato sopra un'immagine di base. Puoi vedere ogni singolo livello che viene scaricato e poi "magicamente" essere unificato. Il diagramma seguente mostra un'immagine di base di Ubuntu composta da 4 livelli di immagine impilati.

Come puoi immaginare, ogni Docker Image fa riferimento a un elenco di livelli di sola lettura che rappresentano le differenze del file system. Quando crei un nuovo contenitore, da un'immagine Docker come faremo in seguito, aggiungi un nuovo livello sottile e scrivibile sopra lo stack sottostante. Tutte le modifiche apportate al contenitore in esecuzione, come la scrittura di nuovi file, la modifica di file esistenti e l'eliminazione di file, vengono scritte su questo sottile livello del contenitore scrivibile. Il diagramma seguente mostra un contenitore basato sull'immagine di Ubuntu 15.04.


Eliminazione di un'immagine Docker

Ora se controlli quante immagini hai sul tuo sistema

sudo docker images

vedrai WordPress, DokuWiki e Hello World. Se per qualsiasi motivo vuoi rimuovere ed eliminare (rmi) un'immagine devi semplicemente digitare

sudo docker rmi <name-of-the-image>

dove il nome dell'immagine è il nome della finestra mobile in quanto viene visualizzato con il comando "immagini della finestra mobile". Ad esempio, se vogliamo eliminare Hello World possiamo semplicemente digitare:

sudo docker rmi hello-world

I contenitori sono effimeri

In base alla progettazione, i contenitori Docker sono effimeri. Per "effimero", intendiamo che un container può essere fermato e distrutto e uno nuovo può essere costruito dalla stessa immagine Docker e messo in atto con un minimo assoluto di set-up e configurazione.

Pertanto, dovresti tenere presente che quando creeremo un contenitore dall'immagine Docker di tua preferenza (WordPress o DokuWiki) tutte le modifiche che apporti, ad es. l'aggiunta di un post, un'immagine, andrà persa una volta interrotto o eliminato il contenitore. In altre parole, quando un contenitore viene eliminato, tutti i dati scritti nel contenitore che non sono archiviati in un volume di dati vengono eliminati insieme al contenitore.

Un volume di dati è una directory o un file nel filesystem dell'host Docker che viene montato direttamente in un contenitore. In questo modo puoi scambiare i contenitori con quelli nuovi e mantenere tutti i dati al sicuro nella cartella home dei tuoi utenti. Tieni presente che puoi montare un numero qualsiasi di volumi di dati in un contenitore. Anche più contenitori possono condividere uno o più volumi di dati.

Il diagramma seguente mostra un singolo host Docker (ad es. Ubuntu 15.10) che esegue due contenitori. Come puoi vedere, esiste anche un singolo volume di dati condiviso situato in /data sull'host Docker. Questo viene montato direttamente in entrambi i contenitori.

In questo modo, quando un container viene eliminato, tutti i dati archiviati nei volumi di dati persistono sull'host Docker e possono essere montati su un nuovo container.

Rete di container Docker

Quando installi Docker, crea un dispositivo di rete nel tuo sistema. Puoi visualizzarlo (sarà chiamato docker0) come parte dello stack di rete di un host usando il comando `ifconfig` sul tuo sistema host.

È importante capire che i container Docker sono isolati e sono microservizi individuali che hanno le proprie proprietà di rete e il modo in cui li eseguiamo e ci colleghiamo ad essi è mappando il loro numero di porta su un numero di porta del sistema host.

In questo modo possiamo esporre il servizio Web eseguito da un container al sistema host.

Creazione di un blocco note personale con un contenitore WordPress

Iniziamo con la creazione del nostro blocco note di test. Per prima cosa utilizzeremo l'immagine di WordPress per creare un contenitore Docker

sudo docker run --name=mynotepad -p 80:80 -p 443:443 bitnami/wordpress

Con il comando precedente, abbiamo chiesto al servizio Docker nel nostro sistema host di creare ed eseguire (docker run) un contenitore chiamato `mynotepad` (--name=mynotepad), mappare la porta HTTP e HTTPS dell'host e del contenitore ( -p 80:80 -p 443:443) e usa l'immagine di WordPress (bitnami/wordpress)

Una volta che il contenitore è stato inizializzato, verrai accolto con alcune informazioni sul contenitore. È ora di avviare un browser e puntarlo su http://localhost

Se tutto è andato bene, vedrai il sito Web WordPress predefinito

Come forse già saprai per accedere alla pagina di amministrazione di WordPress, basta andare su http://localhost/login e utilizzare le credenziali utente/bitnami di default. Quindi puoi creare un nuovo utente o un post di prova in WordPress e pubblicarlo. Puoi vedere il mio post di prova nell'immagine qui sotto

Torniamo al terminale. Come puoi vedere, il tuo terminale è attualmente associato al contenitore in esecuzione. Puoi usare Ctrl+C per uscire. Questo fermerà anche il contenitore.

Ora controlliamo i nostri contenitori disponibili. Puoi eseguire il seguente comando:

sudo docker ps -l

per visualizzare il container che avevamo precedentemente creato ed eseguito.

Come puoi vedere dall'immagine sopra, ci sono alcune informazioni importanti come il nome del contenitore e l'ID univoco del contenitore. In questo modo possiamo riavviare il container:

docker start mynotepad

Quindi puoi controllare i processi eseguiti dal contenitore Docker, con il seguente comando:

sudo docker top mynotepad

Per impostazione predefinita, con il `docker start mynotepad` il contenitore docker è in esecuzione in background. Per fermarlo, puoi eseguire il seguente comando

sudo docker stop mynotepad

Puoi leggere di più su come interagire con il container nella documentazione ufficiale della finestra mobile https://docs.docker.com/engine/userguide/containers/usingdocker/

Dove sono i contenitori

Se vuoi vedere dove si trovano i contenitori nel file system hosts, puoi andare su /var/lib/docker

sudo cd /var/lib/docker
sudo ls
sudo cd containers
sudo cd ID
sudo ls

Come puoi vedere, i numeri ID rappresentano i contenitori effettivi che hai creato.

Creazione di una memoria persistente

Creiamo un nuovo contenitore WordPress, ma questa volta lo metteremo in background ed esporremo anche la cartella WordPress al nostro sistema host in modo da poterci inserire file o rimuovere tutti i file che non vogliamo.

Per prima cosa creiamo una cartella nella nostra home directory

mkdir ~/wordpress-files

quindi esegui e crea un contenitore basato sulla stessa immagine che abbiamo creato la precedente:

sudo docker run -d -ti --name=mynotepad-v2 -v ~/wordpress-files:/opt/bitnami/apps -e USER_UID=`id -u` -p 80:80 bitnami/wordpress

La differenza, questa volta, è che abbiamo usato il parametro -d per la modalità distaccata e il parametro -ti per collegare un terminale in modalità interattiva in modo che io possa interagire con esso in seguito.

Per controllare il contenitore in esecuzione basta eseguire il seguente comando

sudo docker ps

Fermiamo il contenitore

sudo docker stop mynotepad-v2

Ora se esegui il comando `docker ps` non vedrai nulla lì.
Ricominciamolo con il seguente comando:

sudo docker start mynotepad-v2

Se controlli la cartella che abbiamo precedentemente creato vedrai l'installazione di WordPress

Puoi leggere di più sull'immagine che abbiamo utilizzato nell'hub Docker https://hub.docker.com/r/bitnami/wordpress/

Creazione di un blocco note personale con un contenitore DokuWiki

Questa volta creeremo un blocco note usando DokuWiki. Poiché abbiamo precedentemente scaricato l'immagine, l'unica cosa che resta da fare è creare un contenitore da essa.

Quindi eseguiamo il seguente comando per creare il nostro contenitore denominato `mywikipad`

docker run -d -p 80:80 --name mywikipad mprasil/dokuwiki

Quindi vai sul tuo browser e aggiungi il seguente indirizzo per avviare la configurazione del tuo blocco note wiki:

http://localhost/install.php

Puoi saperne di più su DokuWiki dalla documentazione ufficiale e personalizzare il wiki in base alle tue esigenze:

https://www.dokuwiki.org/manual

Eliminazione di un container Docker

Una volta che avrai dimestichezza con la creazione, l'avvio e l'arresto di contenitori docker, ti ritroverai a dover ripulire il pasticcio di test creato dai contenitori multipli.

Per eliminare prima un contenitore dovrai prima fermarlo e poi eliminarlo eseguendo il seguente comando:

docker rm <name of container or ID>

Puoi anche aggiungere più ID nello stesso comando `docker rm` per eliminare più contenitori docker contemporaneamente.

Riepilogo

In questa parte abbiamo imparato come creare un contenitore e usarlo in modo pratico per creare un blocco note personale basato su WordPress o DokuWiki. Abbiamo esaminato alcuni comandi di base su come avviare e arrestare i contenitori che creiamo e come eliminare le immagini e i contenitori.

Nella parte successiva, daremo un'occhiata a come vengono create le immagini della finestra mobile creando le nostre.


Docker
  1. Come ridurre le dimensioni dell'immagine Docker:6 metodi di ottimizzazione

  2. Come usare Docker Compose

  3. Come utilizzare un Dockerfile per creare un'immagine Docker

  4. Come e perché utilizzare un host Docker remoto

  5. Come utilizzare il comando Ispeziona Docker

Come installare e utilizzare Docker su Ubuntu 22.04

Che cos'è Docker Compose e come lo usi?

Come creare un'immagine Docker da un contenitore in esecuzione

Come ridurre le dimensioni dell'immagine Docker nei contenitori Docker

Come utilizzare Docker Salva immagine ed esporta per la condivisione

Come utilizzare Docker Commit per modificare le immagini del contenitore