Docker ti offre tutto il necessario per creare ed eseguire container sul tuo sistema Linux . I contenitori sono simili alle macchine virtuali leggere. Ti consentono di creare immagini di applicazioni portatili che vengono eseguite utilizzando il kernel del sistema operativo del tuo host.
Puoi utilizzare Docker su piattaforme Debian, Fedora, CentOS e Raspbian. Anche i derivati di queste distribuzioni funzioneranno. Docker fornisce build x86/x64 e ARM per la maggior parte delle piattaforme supportate. Per questa guida stiamo usando un sistema Debian con il gestore di pacchetti apt. Istruzioni specifiche per altre distribuzioni possono essere trovate nei documenti Docker.
Docker Compose ti consente di creare ed eseguire pile di più contenitori. Crei un file YAML che configura i contenitori della tua applicazione. È quindi possibile utilizzare un unico comando per avviare tutti i contenitori e collegarli insieme. Compose ti aiuta a separare i componenti dello stack in singoli servizi containerizzati.
Compose è distribuito indipendentemente da Docker. Installa Docker prima di aggiungere Compose & # 8211; altrimenti, Compose non sarà in grado di funzionare.
Installa Docker
Puoi utilizzare il gestore di pacchetti del tuo sistema operativo per installare l'ultima versione di Docker. Dovrai aggiungere il repository di Docker, aggiornare gli elenchi dei pacchetti e quindi installare Docker.
Debian/Ubuntu
Inizia aggiungendo le dipendenze necessario per il processo di installazione:
sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
Successivamente, aggiungi la chiave GPG del repository di Docker:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Aggiungi il repository ai tuoi sorgenti e aggiorna i tuoi elenchi di pacchetti:
echo “deb [arch = amd64 signed-by =/usr/share/keyring/docker-archive-keyring.gpg] https: //download.docker. com/linux/ubuntu $ (lsb_release -cs) stabile “| sudo tee /etc/apt/sources.list.d/docker.list & gt;/dev/null sudo apt-get update
Ora puoi installare Docker:
sudo apt-get install docker-ce docker-ce-cli containerd.io
Fedora
Aggiungi il repository dei pacchetti di Docker:
sudo dnf -y install dnf-plugins-core sudo dnf config-manager –add-repo https://download.docker.com/linux/fedora/docker-ce.repo
Installa Docker:
sudo dnf install docker-ce docker-ce-cli containerd.io
CentOS
Aggiungi il repository dei pacchetti di Docker:
sudo yum -y install yum-utils sudo yum-config-manager –add-repo https://download.docker.com/linux/fedora/docker-ce.repo
Installa Docker:
sudo yum install docker-ce docker-ce- cli containerd.io
Utilizzo di Docker senza Sudo
Il demone Docker viene eseguito come root. Di solito è necessario anteporre i comandi Docker con sudo. Questo può diventare noioso se utilizzi spesso Docker. L'aggiunta di te stesso al gruppo docker ti consentirà di utilizzare Docker senza sudo.
sudo usermod -aG docker $ USER
Una volta che sei nel gruppo, disconnettiti e accedi di nuovo. In alternativa, eseguire il comando docker newgrp per accedere immediatamente al gruppo aggiornato. Ora dovresti essere in grado di rilasciare sudo dai comandi Docker.
Verifica dell'installazione di Docker
Ora Docker è installato, è ora di testarlo! Puoi usare l'immagine minimale hello-world.
docker run hello-world: latest
Dovresti vedere alcune righe di output apparire nel tuo terminale. Docker cercherà prima hello-world: l'ultima immagine sulla tua macchina. Poiché non esiste, l'immagine verrà quindi estratta dal repository Docker Hub.
Una volta che l'immagine è stata estratta, verrà creato un nuovo contenitore. Il contenitore è configurato per emettere un & # 8220; hello world & # 8221; messaggio e quindi uscire. Se vedi il testo, la tua installazione Docker funziona!
Gestione del servizio Docker
Puoi verificare se Docker è in esecuzione ispezionandone il servizio con systemctl. Ci sono due componenti da considerare, docker e containerd. docker è il daemon Docker Engine a cui la CLI invia i comandi. containerd è il runtime sottostante che esegue effettivamente i contenitori.
sudo systemctl status docker.service sudo systemctl status containerd.service
Puoi gestire i demoni come qualsiasi altro servizio sul tuo sistema. Usa systemctl stop se vuoi arrestare temporaneamente Docker e liberare le risorse di sistema usate dai tuoi contenitori:
sudo systemctl stop docker.service
Puoi riavviare il servizio con systemctl start.
Aggiunta di Docker-Compose
docker-compose è un file binario separato che è meglio scaricare direttamente dalle versioni GitHub del progetto. Le distribuzioni Linux più popolari includono Compose nei loro gestori di pacchetti, ma può essere notevolmente obsoleto.
Vai alla pagina delle versioni di Docker Compose e prendi nota dell'ultimo numero di versione. Al momento della scrittura, era 1.29.0.
Sostituisci la versione che vedi invece di 1.29.0 nel comando sottostante. Questo scaricherà il binario giusto per il tuo sistema e lo rilascerà in/usr/local/bin.
sudo curl -L “https://github.com/docker/compose/releases/download/1.29.0/docker -compose – $ (uname -s) – $ (uname -m) “-o/usr/local/bin/docker-compose
Quindi rendi il file eseguibile:
sudo chmod + x/usr/local/bin/docker-compose
Ora sarai in grado di utilizzare il comando docker-compose nel tuo terminale. Prova a eseguire docker-compose –version per verificare.
Creazione di un semplice file Docker-Compose
Per usare docker-compose devi creare un file docker-compose.yml. Descrive i contenitori che compongono lo stack della tua applicazione. È possibile specificare i collegamenti delle porte, le variabili di ambiente, le reti e i volumi utilizzati dai contenitori.
I contenitori dichiarati nello stesso file docker-compose.yml diventano automaticamente parte dello stesso stack. Sono collegati tra loro in una rete Docker, quindi possono comunicare tra loro utilizzando i loro nomi di servizio docker-compose.yml come nomi host.
Ecco un semplice docker-compose.yml per eseguire un server web PHP e un database MySQL:
versione: & quot; 3 & quot; servizi: app: immagine: php8.0-apache ambiente: – MYSQL_SERVER = mysql – MYSQL_USERNAME = root – MYSQL_PASSWORD = porte di esempio: – $ & # 123; PORT: -80 & # 125;: 80 riavvio: a meno che non venga arrestato mysql: immagine : mysql: 8.0 esporre: – ambiente 3306: – volumi MYSQL_ROOT_PASSWORD: – mysql:/var/lib/mysql riavvio: volumi a meno che non siano stati arrestati: mysql:
Puoi avviare entrambi i servizi eseguendo docker-compose up -d. Vedrai che entrambe le immagini vengono estratte da Docker Hub. I contenitori verranno quindi avviati. Puoi fermarli entrambi usando docker-compose stop. Usa docker-compose down per rimuovere i contenitori.
Il file YAML di esempio mostra alcune funzionalità di Docker Compose. I contenitori vengono definiti nel nodo dei servizi, con ogni contenitore che dichiara la propria immagine Docker. È possibile passare le variabili di ambiente della shell in contenitori (ambienti) e configurare i collegamenti delle porte Docker (porte). Le variabili d'ambiente possono essere interpolate in stringhe usando la sintassi $ {VARIABILE: -DEFAULT}. Se la variabile non è impostata nella shell, come valore verrà invece utilizzato DEFAULT. Puoi saperne di più su Docker Compose nella nostra guida dedicata.
Riepilogo
Puoi facilmente installare Docker utilizzando i gestori di pacchetti delle distribuzioni Linux più diffuse. Aggiungi il repository Docker e quindi installa docker-ce, docker-ce-cli e containerd.io. Questi componenti ti danno tutto ciò di cui hai bisogno per creare ed eseguire i tuoi contenitori.
Una volta che sei attivo e funzionante, puoi scrivere un Dockerfile e utilizzare docker build -t my-app: latest. per costruirlo. Quindi utilizza docker run my-app: latest per avviare il contenitore.
Docker-Compose è un livello di astrazione aggiuntivo che semplifica l'esecuzione di uno & # 8220; stack & # 8221; di più contenitori. Con Compose, non è necessario eseguire manualmente più comandi in serie. Puoi scrivere un file YAML dichiarativo e utilizzare docker-compose up per avviare tutti i tuoi contenitori all'unisono.