Docker ti offre tutto ciò di cui hai bisogno per creare ed eseguire container sul tuo sistema Linux. I container 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 usare 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. Stiamo usando un sistema Debian con apt
gestore di pacchetti per questa guida. Le istruzioni specifiche per altre distribuzioni sono disponibili 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 del tuo stack in singoli servizi containerizzati.
Compose è distribuito indipendentemente da Docker. Installa Docker prima di aggiungere Compose, altrimenti Compose non sarà in grado di funzionare.
RELAZIONATO: Come utilizzare Docker per containerizzare PHP e Apache
Installa Docker
Puoi utilizzare il gestore pacchetti del tuo sistema operativo per installare l'ultima versione di Docker. Dovrai aggiungere il repository di Docker, aggiornare gli elenchi di pacchetti e quindi installare Docker.
Debian/Ubuntu
Inizia aggiungendo le dipendenze necessarie per il processo di installazione:
sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
Quindi, 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/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /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 devi anteporre ai comandi Docker sudo
. Questo può diventare noioso se usi spesso Docker. Aggiungendoti alla docker
il gruppo ti consentirà di utilizzare Docker senza sudo
.
sudo usermod -aG docker $USER
Una volta che sei nel gruppo, esci e accedi di nuovo. In alternativa, esegui la newgrp docker
comando per accedere immediatamente al gruppo aggiornato. Ora dovresti essere in grado di rilasciare sudo
dai comandi Docker.
Test dell'installazione Docker
Ora Docker è installato, è ora di testare il funzionamento! Puoi usare il minimo hello-world
immagine.
docker run hello-world:latest
Dovresti vedere apparire alcune righe di output nel tuo terminale. Docker cercherà prima hello-world:latest
immagine sulla tua macchina. Poiché non esisterà, l'immagine verrà quindi estratta dal repository Docker Hub.
Una volta che l'immagine è stata estratta, da essa verrà creato un nuovo contenitore. Il contenitore è configurato per emettere un messaggio di base "hello world" e quindi uscire. Se vedi il testo, l'installazione di Docker funziona!
Gestione del servizio Docker
Puoi verificare se Docker è in esecuzione controllando il suo servizio con systemctl
. Ci sono due componenti da considerare, docker
e containerd
. docker
è il demone Docker Engine a cui la CLI invia i comandi. containerd
è il runtime sottostante che esegue effettivamente i tuoi 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 desideri interrompere temporaneamente Docker e liberare risorse di sistema utilizzate dai tuoi container:
sudo systemctl stop docker.service
Puoi riavviare il servizio con systemctl start
.
Aggiunta di Docker-Compose
docker-compose
è un binario separato che è meglio scaricare direttamente dalle versioni di GitHub del progetto. Le distribuzioni Linux più popolari includono Compose nei loro gestori di pacchetti, ma possono essere notevolmente obsolete.
Vai alla pagina delle versioni di Docker Compose e prendi nota del numero di versione più recente. 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 eseguibile il file:
sudo chmod +x /usr/local/bin/docker-compose
Ora sarai in grado di utilizzare docker-compose
comando nel tuo terminale. Prova a eseguire docker-compose --version
per controllare.
Creazione di un semplice file Docker-Compose
Per utilizzare docker-compose
devi creare un docker-compose.yml
file. Questo descrive i contenitori che compongono lo stack della tua applicazione. Puoi specificare i collegamenti delle porte, le variabili di ambiente, le reti e i volumi utilizzati dai tuoi container.
Contenitori dichiarati nello stesso docker-compose.yml
il file diventa automaticamente parte dello stesso stack. Sono collegati tra loro in una rete Docker, quindi possono comunicare tra loro utilizzando il loro docker-compose.yml
nomi dei servizi come nomi host.
Ecco un semplice docker-compose.yml
per eseguire un server Web PHP e un database MySQL:
version: "3" services: app: image: php8.0-apache environment: - MYSQL_SERVER=mysql - MYSQL_USERNAME=root - MYSQL_PASSWORD=example ports: - ${PORT:-80}:80 restart: unless-stopped mysql: image: mysql:8.0 expose: - 3306 environment: - MYSQL_ROOT_PASSWORD volumes: - mysql:/var/lib/mysql restart: unless-stopped volumes: 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 interromperli 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 sono definiti in services
nodo, con ogni contenitore che dichiara la sua image
Docker . Puoi passare le variabili d'ambiente della shell nei contenitori (environments
) e imposta i binding delle porte Docker (ports
). Le variabili d'ambiente possono essere interpolate in stringhe usando il ${VARIABLE:-DEFAULT}
sintassi. Se la variabile non è impostata nella shell, DEFAULT
verrà invece utilizzato come valore. Puoi saperne di più su Docker Compose nella nostra guida dedicata.
Riepilogo
Puoi installare facilmente 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 offrono tutto ciò di cui hai bisogno per creare ed eseguire i tuoi container.
Una volta che sei operativo, puoi scrivere un Dockerfile
e usa docker build -t my-app:latest .
per costruirlo. Quindi usa docker run my-app:latest
per avviare il tuo container.
Docker-Compose è un livello di astrazione aggiuntivo che semplifica l'esecuzione di uno "stack" 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 container all'unisono.
RELAZIONATO: Cos'è Docker Compose e come lo usi?