Installazione di Docker
Tipi di Installazione
Sistemi Operativi
Linux
Ubuntu e simili [deb], RedHat e simili (CentOS) [RPM]
- Su hardware diretto (Docker Engine)
- Su Macchina Virtuale Linux (Docker Engine)
- VirtualBox (preferito)
- KVM
- Con Docker Desktop
Windows
- Su Macchina Virtuale Linux (Docker Engine)
- VirtualBox (preferito)
- VMWare
- Linux on Windows with WSL2
- Con Docker Desktop
Docker Desktop
Nuova offerta Docker
Basato su Macchina Virtuale Linux
Dashboard:
- Soluzione per principianti
- Interfaccia grafica Dashboard comune
- Molte meno opzioni che da linea di comando
- Non ancora performante o stabile. Promesse di migliorie
NB: Non si possono avere simultaneamente attivi Docker Engine e Docker Desktop
Su Linux, prima di attivare Docker Desktop occorre disabilitare Docker Engine:
sudo systemctl stop docker
sudo systemctl disable docker.service
sudo systemctl disable docker.socket
Installare Docker su Ubuntu
Su Hardware o su VM VirtualBox
Requisiti:
- Linux recente 64 bit
- Linux Mint (derivato da Ubuntu Focal 20.04 LTS)
- 4 GB RAM
- 100+ GB HD
- Connessione a Internet
Docker Engine
Docker Engine è la componente principale
Installare Docker Community Edition:
sudo apt update
sudo apt install docker.io
Docker Compose
Docker Compose è uno strumento per l’orchestrazione di più contenitori sulla stessa macchina host
Installare Docker Compose su Ubuntu:
sudo curl -SL https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose version
Esiste anche una versione pacchettizzata di release, installabile con:
sudo apt install docker-compose
Ma è una versione relativamente vecchia, e sconsigliata.
Nuova Versione di Docker Compose
Il Docker Compose originale è una utility sviluppata da un gruppo indipendente da Docker.io
- scritta in Python
- comando con trattino separatore
docker-compose comando [opzioni] [argomenti]
Docker.io ha di recente aggiunto la sua versione di Docker Compose scritta in Go e parte del comando docker
- comando senza trattino separatore
docker compose comando [opzioni] [argomenti]
- La sintassi non è cambiata
- Usano entrambi il file
docker-compose.yml
Docker Compose è un plugin scaricabile dal repository software di Docker.io
Procedura shell docker-compose.sh
:
#! /bin/bash
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$UBUNTU_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
# Install the Docker Compose plugin:
sudo apt install docker-compose-plugin
Renderla eseguibile e lanciarla.
Dopo l'Installazione di Docker
Attivare il servizio:
sudo systemctl start docker
Abilitare il servizio ad ogni reboot:
sudo systemctl enable docker
Configurare l’utente corrente:
sudo usermod -aG docker $USER
Reboot del sistema. In teoria un relogin è sufficiente, ma la VM Ubuntu vuole proprio un reboot.
Test:
docker info
Gestione del Server Docker in Linux
Il server è gestito come servizio standard di Linux e si può controllare con:
sudo systemctl
azione
docker
ove azione
può essere:
status
- stato del servizio e processi attivistart
- far partire il serviziostop
- fermare il servizioenable
- configurare lo start automatico al bootdisable
- disabilitare lo start automatico al boot
Due componenti del server:
docker.service
- il serviziodocker.socket
- il socket Unix di collegamento
Il Client docker
E’ un applicativo da linea di comando (CLI) che:
- interagisce con l’utente
- invia i comandi al server per l’esecuzione
Nella versione di Docker più moderna i comandi hanno la struttura:
docker
ambiente comando
Alcuni comandi storici non hanno bisogno della specifica dell’ambiente e sono del formato:
docker
comando
Per avere un veloce aiuto sui comandi disponibili:
docker
Per avere un veloce aiuto sui comandi disponibili in un certo ambiente:
docker
ambiente
docker
ambiente
--help
- da anche le opzioni
Ambienti
Ogni ambiente permette la gestione di un diverso aspetto di Docker:
config
- configurazioni del cluster Swarmcontainer
– contenitori di processoimage
- immagininetwork
– contenitori di retinode
- nodi del cluster Swarmplugin
- pluginssecret
- segreti del cluster Swarmservice
- servizi offerti dal cluster Swarmswarm
- il cluster Swarmsystem
- aspetti generali del sistematrust
- fiducia delle immaginivolume
- contenitori di dati
Molti comandi legacy non richiedono la specifica dell’ambiente
Manualistica
Docker è dotato di ricca manualistica di riferimento.
Il nome della pagina di manuale mappa il comando docker dato:
docker
ambiente comando
ha manualistica con
man docker-
ambiente-comando
Esempi:
man docker
man docker-run
man docker-network-create
Nota: Alpine Linux
La release Linux di riferimento per Docker è Ubuntu
- Questa è anche l’immagine di base su cui molte immagini di applicativi sono costruite
- Ma: richiede molti MB di disco
Un’alternativa recente per lo sviluppo immagini di applicativi è Alpine Linux
- Molto ridotto nel footprint
- Richiede pochissimi MB di disco
Attenzioni:
- Alpine ha comandi di amministrazione diversi
- I comandi di base sono ottenuti con
busybox
- L’ambiente runtime è MUSL e non GLIBC
- Questo necessita di attenzioni quando si sviluppano eseguibili compilati dai contenitori