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

DDesk

Nuova offerta Docker

Basato su Macchina Virtuale Linux

Dashboard:

Ddashboard

  • 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 systemctlazionedocker

ove azione può essere:

  • status - stato del servizio e processi attivi
  • start - far partire il servizio
  • stop - fermare il servizio
  • enable - configurare lo start automatico al boot
  • disable - disabilitare lo start automatico al boot

Due componenti del server:

  • docker.service - il servizio
  • docker.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:

dockerambiente comando

Alcuni comandi storici non hanno bisogno della specifica dell’ambiente e sono del formato:

dockercomando

Per avere un veloce aiuto sui comandi disponibili:

docker

Per avere un veloce aiuto sui comandi disponibili in un certo ambiente:

dockerambiente

dockerambiente--help - da anche le opzioni

Ambienti

Ogni ambiente permette la gestione di un diverso aspetto di Docker:

  • config - configurazioni del cluster Swarm
  • container – contenitori di processo
  • image - immagini
  • network – contenitori di reti
  • node - nodi del cluster Swarm
  • plugin - plugins
  • secret - segreti del cluster Swarm
  • service - servizi offerti dal cluster Swarm
  • swarm - il cluster Swarm
  • system - aspetti generali del sistema
  • trust - fiducia delle immagini
  • volume - 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:

dockerambiente comando

ha manualistica con

man docker-ambiente-comando

Esempi:

man docker
man docker-run
man docker-network-create

Nota: Alpine Linux

Alpine

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