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

Come installare e utilizzare Docker su Ubuntu (nel mondo reale)

Se stai cercando informazioni su come installare Docker su Ubuntu, sei nel posto giusto. Non solo, ma come bonus, questo tutorial ti insegnerà anche a mostrarti come eseguire i comandi di base di Docker per eseguire e gestire i container.

Utilizzando le pratiche funzionalità di Visual Studio (VS) Code, imparerai anche come potenziare le tue abilità SSH. Iniziamo!

Correlati: Un ragazzo Windows in un mondo Linux:VS Code e SSH remoto

Prerequisiti

Se desideri seguire passo dopo passo, in questo tutorial, assicurati di avere quanto segue:

  1. Una nuova installazione di Ubuntu Server LTS con SSH abilitato (Questa guida utilizzerà Ubuntu Server LTS 20.04.1)
  2. Una macchina Windows con VSCode installato (questa guida utilizzerà Visual Studio Code 1.52.1)
  3. L'estensione SSH ufficiale VSCode installata e connesso alla tua installazione LTS di Ubuntu Server

Installazione di Docker su Ubuntu

Iniziamo installando prima Docker su Ubuntu. A questo punto, il tutorial presuppone che tu sia sul tuo computer Windows locale con VS Code aperto connesso al tuo server Ubuntu tramite SSH. Scopri come configurare questo pratico ambiente nell'ultimo articolo sull'utilizzo di VS Code e SSH .

Nell'esempio seguente, VSCode è connesso in remoto a Ubuntu con la casa cartella (in questo caso, /home/homelab ) aperto come spazio di lavoro:

Il processo effettivo di installazione di Docker in Ubuntu Server è a due comandi di distanza. Ubuntu rende Docker disponibile come opzione di installazione nel gestore di pacchetti predefinito fornito con Ubuntu noto come apt .

Nella finestra del terminale SSH di VS Code, esegui i due comandi seguenti per installare Docker:

sudo apt update -y
sudo apt install docker.io -y

Durante l'installazione di Ubuntu Server, potrebbe esserti stata offerta la possibilità di installare Docker in un attimo. Se lo hai fatto, rimuovi prima il pacchetto snap eseguendo sudo snap remove docker

Puoi guardare l'installazione della finestra mobile nell'animazione qui sotto:

Ubuntu è abbastanza carino da abilitare e impostare automaticamente il servizio per l'avvio all'avvio per te, quindi sei pronto per iniziare a utilizzare Docker!

Creazione ed esecuzione di un contenitore Docker su Ubuntu

Ora che hai installato Docker, cosa puoi farci? Iniziamo con la creazione di un contenitore Docker. Questo tutorial imposterà un server Web statico come un buon esempio di contenitore Docker. In questa sezione potrai:

  • Configura un nuovo container dall'Docker Hub Archivio immagini per eseguire un servizio HTTP
  • Usa Port Mapping per mappare la porta HTTP all'interno del container al tuo host Ubuntu
  • Imposta Bind Mounts per mappare dati importanti dall'interno del container al tuo host Ubuntu
  • Configura la persistenza tramite riavvii per il tuo container

Se uno qualsiasi dei passaggi precedenti sembra confuso, non preoccuparti, tratteremo ogni passaggio, uno alla volta per aiutarti a comprendere il processo.

Download dell'immagine Docker

La prima domanda da porsi è:da dove verrà questo contenitore? Diamo un'occhiata al Docker Hub.

Gran parte di Docker è la comprensione dei repository di immagini . Invece di essere distribuiti come pacchetti, i servizi in Docker vengono distribuiti come immagini Docker.

Un'immagine Docker è un'istantanea del software che l'editore vuole distribuire e dell'intero sistema di archiviazione! Questo è analogo alla creazione di un'immagine .wim di Windows.

Questa acquisizione del filesystem rende Docker così popolare:il software viene acquisito insieme all'intero ambiente operativo. In questo modo si eliminano i problemi introdotti dalle differenze tra gli ambienti server.

Uno dei repository più popolari (e quello predefinito) per le immagini è Docker Hub noto anche come repository Docker ufficiale. Il repository di immagini è dove puoi scaricare migliaia di immagini Docker precreate da eseguire come contenitori.

Poiché questo tutorial sta configurando un server Web statico, è necessario scaricare un'immagine del server Web. I due server web più popolari là fuori sono Apache httpd e Nginx ma per cambiare un po' le cose e presentarti potenzialmente un nuovo server web, usiamone uno chiamato Caddy .

Caddy è un server web noto per la sua semplicità. Molte configurazioni server valide possono essere distribuite utilizzando una singola riga in un file. Semplice è buono e costituisce anche un buon esempio di base.

  1. Per prima cosa, devi trovare l'immagine Docker. Sul tuo computer Windows, vai a https://hub.docker.com .
  2. Esegui una ricerca per caddy nell'angolo in alto a sinistra della pagina. Dovresti vedere una pagina simile alla seguente:

Un vantaggio (e uno svantaggio) di Docker Hub è che chiunque, anche tu, può creare e caricare immagini Docker sul sito.

Devi fare attenzione per assicurarti che l'immagine che scegli provenga da una fonte attendibile. Chiunque può inserire malware in un'immagine se sceglie e carica la propria versione su Docker Hub.

3. Prendere nota del nome dell'immagine. Nello screenshot qui sopra, il nome è caddy Esattamente. Avrai bisogno di questo nome per specificare il nome dell'immagine nei passaggi successivi.

Esecuzione di un container con Docker su Ubuntu

Una volta che conosci il nome dell'immagine che desideri scaricare, è il momento di scaricarla e creare un contenitore da essa.

L'avvio di un container da un'immagine richiede un singolo comando. Nel tuo terminale SSH connesso al tuo server Ubuntu, esegui il seguente docker run comando.

Il comando seguente controlla il caddy immagine sulla macchina locale. Se non esiste, scarica l'immagine da Docker Hub, crea un contenitore e lo avvia. Il comando seguente utilizza il -p passa a mappare la porta di ascolto 80 del server Ubuntu alla porta 80 del contenitore. Questa funzione è chiamata mappatura delle porte.

sudo docker run -p 80:80 caddy

La maggior parte delle immagini Docker Hub segue una convenzione di denominazione di /. Tuttavia, le immagini contrassegnate come "ufficiali" da Docker non hanno un davanti (come il caddy sopra).

L'esecuzione del comando precedente genera un output simile al seguente, con le informazioni di registro del caddy visualizzate direttamente nel terminale:

Potresti notare che quasi tutti i comandi della finestra mobile sono preceduti da sudo , per forzare l'esecuzione dei comandi come amministratore. Per impostazione predefinita, il servizio Docker viene eseguito come root e tutte le modifiche apportate ai contenitori o alle immagini devono essere eseguite come amministratore.

E... sei pronto e funzionante! Questo è tutto ciò che c'è da fare. Non sei contento di aver installato Docker su Ubuntu?

Ora vai su http:// sul tuo computer Windows e dovresti vedere una pagina di destinazione per Caddy. Puoi vederlo di seguito (l'IP di questa guida è sostituito con http://homelab-docker ):

Il caddy container è in esecuzione ora ma potresti aver notato un problema. Esecuzione di quella docker comando prende il controllo della tua riga di comando. Non è possibile eseguire altri comandi e, se la sessione termina, il contenitore in esecuzione si interrompe. Risolviamo il problema eseguendo il contenitore in background (noto anche come stacco il contenitore).

Esecuzione di contenitori Docker in background

Ora hai un container in esecuzione ma la tua riga di comando è bloccata. Non puoi fare nient'altro. Hai bisogno di un modo migliore per avviare un container eseguendolo in background come un servizio. Per farlo:

  1. Interrompi il contenitore corrente premendo CTRL+c nella riga di comando. Questo dovrebbe restituirti la tua riga di comando.
  2. Ora, esegui nuovamente lo stesso comando del precedente solo con -d parametro questa volta come mostrato di seguito. Vedrai che Docker restituirà un ID contenitore e ti restituirà la riga di comando.
sudo docker run -d -p 80:80 caddy

Gestione dei contenitori in background con i comandi Docker

Una volta che hai uno o più Docker in esecuzione in background, dovrai gestirli in qualche modo. Docker ti fornisce alcuni comandi diversi per farlo usando docker container comandi.

  • sudo docker container list -a :elenca tutti i contenitori (sia in esecuzione che fermi) e il loro stato
  • sudo docker container stop <name> :ferma un contenitore Docker in base al suo nome (o al suo ID)
  • sudo docker container start <name> :avvia un contenitore Docker con il loro nome (o con il loro ID)
  • sudo docker container prune :distruggi e rimuovi tutti i contenitori fermi

Puoi vedere tutti i comandi precedenti utilizzati nel contesto nello screenshot qui sotto:

Esistono molti altri comandi del contenitore Docker per visualizzare, modificare, ispezionare o persino remoto nei contenitori sul tuo server. Puoi visualizzarli tutti eseguendo sudo docker container --help .

Anche se ora hai distribuito un server Web in un contenitore in esecuzione in background, non hai ancora modo di ospitare il tuo contenuto personalizzato. Così com'è, Caddy sta solo servendo la pagina web predefinita.

Diamo ora un'occhiata a come utilizzare le immagini Docker con un concetto chiamato bind mounts per distribuire contenitori con dati significativi.

Memorizzazione dei dati del contenitore con supporti vincolati

Docker lavora sul concetto di immagini (e dei contenitori che generano) come usa e getta o transitori . Se c'è un aggiornamento del software Caddy, non aggiorni il servizio, butti via l'intero bambino con la vaschetta e usi un'immagine completamente nuova da zero.

I vantaggi di smaltire e ricreare contenitori come questo sono significativi. Le instabilità nel software vengono introdotte nel tempo aggiornando continuamente un software (potenzialmente) vecchio di anni. Utilizzando ogni volta un'immagine nuova, Docker fornisce una base stabile, affidabile e (presumibilmente) testata a ogni aggiornamento.

Questo concetto equivale all'utilizzo di una nuova installazione di Windows ogni volta che aggiorni il software dell'applicazione Windows. Non è un'idea divertente su Windows, ma estremamente applicabile in Docker.

La metodologia usa e getta ha però un chiaro problema. Non vuoi che i dati essenziali vengano eliminati quando il tuo servizio attuale viene spazzato via. Docker risolve questo problema utilizzando un concetto chiamato bind mounts .

Esaminiamo ora come creare un montaggio bind per un container.

Creazione della struttura delle cartelle e pulizia

Prima di poter utilizzare i montaggi di binding, è necessario creare una posizione in cui archiviare questi dati. Questo tutorial creerà una cartella nella tua home directory. Per farlo in VS Code mentre sei ancora connesso al tuo server Ubuntu:

  1. Fai clic con il pulsante destro del mouse in un'area vuota di VS Code Explorer pannello e scegli nuova cartella.

2. Assegna un nome alla nuova cartella container/caddy/file.

I nomi delle cartelle dipendono da te purché siano definiti correttamente nel prossimo comando della finestra mobile. Utilizzando una barra, VS Code interpreta questo come la creazione di tre cartelle. I file cartella è una sottodirectory di caddy e caddy è una sottodirectory di contenitori. Non è necessario utilizzare questa struttura di cartelle, ma la struttura ha più senso quando si hanno più contenitori sullo stesso server.

Se non è stato fatto in precedenza, interrompi e rimuovi tutti i contenitori che hai creato in precedenza con quanto segue:

# stop and remove ALL currently running containers.
# The $(sudo docker ps -q) dynamically grabs all running container IDs
sudo docker container stop $(sudo docker ps -q)
sudo docker container prune

Puoi vedere questo comando nello screenshot qui sotto:

Distribuzione di un contenitore caddy con supporti per rilegatura

Ora hai la struttura delle cartelle costruita sul server Ubuntu. È ora di creare un contenitore Caddy con supporti di rilegatura.

  1. Prima di andare troppo lontano, scopri dove il container con cui stai lavorando memorizza i dati persistenti. Quella posizione sarà diversa a seconda di chi ha creato l'immagine Docker e dello scopo che serve.

L'opzione migliore per trovare dove sono archiviati i dati persistenti è controllare la documentazione all'interno di Docker Hub per l'immagine in questione. Per Caddy, puoi trovare la documentazione qui :

2. Avviare il contenitore utilizzando il comando seguente. il -v ~/containers/caddy/files:/usr/share/caddy il parametro sta mappando il percorso prima dei due punti (~/containers/caddy/files ) nella cartella all'interno del contenitore (/usr/share/caddy ). Funziona in modo estremamente simile al comando di mappatura delle porte:tranne per il fatto che stai mappando una cartella anziché una porta. Questo tipo di comando è chiamato Bind Mount .

# bind a folder on the host (the path before the colon) to
# /usr/share/caddy inside the container
sudo docker run -d -p 80:80 -v ~/containers/caddy/files:/usr/share/caddy caddy

la tilde (~ ) nel codice sopra si riferisce alla cartella home. Per questo articolo, è equivalente a /home/homelab .

3. Apri un browser e torna all'indirizzo http del tuo server. Noterai che il server ora sta servendo un 404 pagina. Questo è previsto perché al momento non hai un index.html file in ~/containers/caddy/files .

4. Crea un index.html file in ~/containers/caddy/files sul server Ubuntu nella finestra di VS Code Explorer che ha l'aspetto seguente:

<body><h2>hello world!</h2></body>

5. Vai all'indirizzo HTTP del tuo server e conferma che il container sta ora servendo il tuo nuovo index.html pagina.

Puoi vedere tutto quanto sopra nella seguente animazione:

A differenza dei comandi di gestione della finestra mobile, i file che stai creando (come index.html ) non richiedono diritti amministrativi. Questo perché possiedi il contenuto che il server caddy sta servendo, poiché si trova nella tua cartella Inizio.

Convalida del montaggio vincolante

Eccellente! Non solo stai utilizzando un contenitore Docker completamente nuovo, ma quel contenitore sta servendo il contenuto salvato localmente nella tua cartella Inizio! Puoi dimostrarlo eseguendo quanto segue:

  1. Arresta e rimuovi il contenitore in esecuzione. Questo passaggio rimuove completamente tutto, incluso il file index.html se non stavi utilizzando i montaggi bind.
sudo docker container stop $(sudo docker ps -q)
sudo docker container prune

2. Crea un contenitore nuovo di zecca.

sudo docker run -d -p 80:80 -v ~/containers/caddy/files:/usr/share/caddy caddy

3. Verifica che il nuovo contenitore stia ancora servendo il file index.html su http://<your server> indirizzo.

Creazione di contenitori Docker persistenti

Un contenitore non è così utile se si arresta al riavvio del server. Per impostazione predefinita, questo è ciò che accadrà se non lo fai accadere. Per evitare ciò, generiamo di nuovo un nuovo contenitore caddy, ma questa volta una volta che si riavvia quando l'host Docker, in questo caso Ubuntu, si riavvia.

  1. Interrompi e rimuovi tutti i contenitori in esecuzione.
# stop and remove ALL currently running containers
sudo docker container stop $(sudo docker ps -q)
sudo docker container prune

2. Riavvia il contenitore del caddy con il --restart always parametro, per impostare questo nuovo contenitore in modo che inizi con l'host al riavvio. Con il --restart always flag in atto, il tuo container ora si comporta come un servizio vero e proprio:si avvia automaticamente all'avvio.

sudo docker run -d -p 80:80 -v ~/containers/caddy/files:/usr/share/caddy --restart always caddy

3. Riavvia il server.

4. Ora verifica che il nuovo contenitore venga visualizzato e stia ancora servendo il file index.html su http://<your server> indirizzo.

Puoi vedere i seguenti comandi applicati di seguito:

Andiamo avanti

A questo punto, dovresti avere un ambiente Docker funzionante e una conoscenza di base di immagini e contenitori. Puoi eseguire il pull, avviare, interrompere ed eseguire la gestione di base dei tuoi container. Hai anche creato correttamente un contenitore di servizi Web in esecuzione utilizzando i montaggi di binding e la mappatura delle porte.

Ci sono ancora molte cose da trattare su Docker:resta sintonizzato su questo spazio, poiché il prossimo articolo tratterà della gestione avanzata della finestra mobile utilizzando Docker Compose.


Docker
  1. Come installare e utilizzare Docker su Ubuntu 20.04

  2. Come installare e utilizzare Wine su Ubuntu 20.04

  3. Come installare e utilizzare Docker in Ubuntu 20.04

  4. Come installare e utilizzare Docker Compose su CentOS

  5. Come installare Docker ed eseguire Docker Container in Ubuntu

Come installare e utilizzare R su Ubuntu

Come installare e utilizzare il comando Exa su Ubuntu 20.04

Come installare e utilizzare Docker Compose su Ubuntu 20.04

Come installare e utilizzare Docker Compose su Ubuntu 22.04

Come installare e utilizzare Docker su Ubuntu 22.04

Come installare e utilizzare Docker su Ubuntu 20.04