Guida completa alla creazione e gestione delle immagini Docker su Ubuntu | Installazione, ottimizzazione e risoluzione dei problemi

目次

1. Introduzione

Cos’è Docker?

Docker è una piattaforma che utilizza la tecnologia di virtualizzazione basata su container per sviluppare, distribuire ed eseguire applicazioni in modo efficiente. A differenza delle macchine virtuali (VM) tradizionali, i container condividono il kernel del sistema operativo host, consentendo tempi di avvio più rapidi e un consumo di risorse inferiore.

Vantaggi dell’Uso di Docker su Ubuntu

Ubuntu è una delle distribuzioni Linux altamente compatibili con Docker. I principali vantaggi includono:

  • Supporto Ufficiale : Docker supporta ufficialmente Ubuntu, e l’installazione è semplice tramite il repository ufficiale.
  • Gestione Stabile dei Pacchetti : Il gestore di pacchetti APT di Ubuntu rende facile la gestione delle versioni di Docker.
  • Ampio Supporto della Community : Ubuntu ha una vasta base di utenti globale, rendendo più semplice trovare soluzioni durante la risoluzione dei problemi.

Cosa Imparerai in Questo Articolo

Questo articolo ti guiderà passo dopo passo attraverso i seguenti argomenti:

  1. Come installare Docker su Ubuntu
  2. Operazioni di base sulle immagini Docker
  3. Creazione di immagini personalizzate usando Dockerfile
  4. Configurazione dell’ambiente linguistico giapponese in un container Ubuntu
  5. Ottimizzazione e riduzione della dimensione delle immagini Docker
  6. Sviluppo di applicazioni in un container Ubuntu
  7. Errori comuni e soluzioni di risoluzione dei problemi

Questa guida è utile sia per principianti che per utenti avanzati, quindi sentiti libero di usarla come riferimento.

2. Installazione di Docker su Ubuntu

Installazione di Docker Usando il Repository Ufficiale

Su Ubuntu, puoi installare facilmente Docker usando il repository ufficiale. Segui i passaggi seguenti per configurarlo.

1. Rimuovi i Pacchetti Docker Esistenti

Ubuntu fornisce un pacchetto chiamato docker.io per impostazione predefinita, ma potrebbe trattarsi di una versione obsoleta. Si consiglia di rimuoverlo prima.

sudo apt remove docker docker-engine docker.io containerd runc

2. Installa i Pacchetti Richiesti

Prima di installare Docker, installa i pacchetti di dipendenze necessari.

sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

3. Aggiungi il Repository Ufficiale di Docker

Aggiungi la chiave GPG ufficiale di Docker e configura il repository.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) 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

4. Installa Docker

Una volta aggiunto il repository, installa Docker.

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

5. Verifica l’Installazione

Per controllare se Docker è stato installato correttamente, visualizza le informazioni sulla versione.

docker --version

Configurazione Iniziale Dopo l’Installazione

1. Avvia e Abilita il Servizio Docker

Avvia il servizio Docker e configuralo per l’esecuzione automatica all’avvio del sistema.

sudo systemctl start docker
sudo systemctl enable docker

2. Consenti agli Utenti Non-root di Usare Docker

Per impostazione predefinita, solo l’utente root può eseguire Docker. Per consentire a un utente regolare di usare i comandi Docker, aggiungilo al gruppo docker.

sudo usermod -aG docker $USER

Per applicare le modifiche, esci e accedi nuovamente.

3. Testa Docker

Esegui il container hello-world per verificare se Docker funziona correttamente.

docker run hello-world

Se vedi il messaggio “Hello from Docker!”, l’installazione è riuscita.

3. Operazioni di Base con le Immagini Docker

Cos’è un’Immagine Docker?

Un’immagine Docker funge da modello per la creazione di container. Usando un’immagine Docker basata su Ubuntu, puoi impostare rapidamente un ambiente Ubuntu all’interno di un container.

Scaricamento di Immagini Ubuntu da Docker Hub

Docker Hub ospita una vasta collezione di immagini Docker ufficiali. Per scaricare un’immagine Ubuntu, usa il comando seguente:

docker pull ubuntu

Avvio e Arresto dei Container

Puoi avviare un container utilizzando l’immagine Ubuntu scaricata con il seguente comando:

docker run -it ubuntu bash

Questo comando apre una shell all’interno del container Ubuntu, permettendoti di interagire direttamente con esso.

Elenco dei Container in Esecuzione

Per verificare quali container sono attualmente in esecuzione, usa questo comando:

docker ps

Per visualizzare tutti i container, inclusi quelli fermati, aggiungi l’opzione -a:

docker ps -a

Arresto e Rimozione dei Container

Per arrestare un container in esecuzione, usa il seguente comando:

docker stop [container ID or name]

Per rimuovere un container non necessario, usa questo comando:

docker rm [container ID or name]

Gestione delle Immagini Docker

Per elencare tutte le immagini Docker scaricate, usa il seguente comando:

docker images

Per rimuovere un’immagine inutilizzata, usa questo comando:

docker rmi [image ID]

4. Creazione di Immagini Docker Personalizzate con Dockerfile

Cos’è un Dockerfile?

Un Dockerfile è un file di configurazione utilizzato per creare immagini Docker. Definendo istruzioni specifiche in un Dockerfile, puoi costruire immagini Docker personalizzate adatte alle tue esigenze. Questo aiuta a standardizzare gli ambienti di sviluppo e a includere i pacchetti necessari nell’immagine.

Sintassi Base di un Dockerfile

Un Dockerfile include tipicamente i seguenti comandi chiave:

CommandDescription
FROMSpecifies the base image
RUNExecutes commands to build the image
COPYCopies files into the container
WORKDIRSets the working directory
CMDDefines the default command to run when the container starts
ENTRYPOINTSpecifies the main command executed when the container runs

Creazione di un’Immagine Docker Personalizzata Basata su Ubuntu

Segui questi passaggi per creare un’immagine Docker personalizzata basata su Ubuntu.

1. Crea una Directory di Lavoro

Prima di tutto, crea una nuova directory di progetto e naviga al suo interno.

mkdir my-ubuntu-image
cd my-ubuntu-image

2. Crea un Dockerfile

All’interno della directory, crea un file Dockerfile e aggiungi il seguente contenuto:

# Use the official Ubuntu base image
FROM ubuntu:latest

# Maintainer information (optional)
LABEL maintainer="your-email@example.com"

# Update package lists and install basic tools
RUN apt update && apt install -y curl vim git

# Set the working directory
WORKDIR /workspace

# Default command executed when the container starts
CMD ["bash"]

3. Costruisci l’Immagine Docker

Usa il seguente comando per costruire l’immagine personalizzata dal Dockerfile.

docker build -t my-ubuntu-image .

L’opzione -t assegna un nome all’immagine.

4. Verifica l’Immagine Costruita

Controlla l’elenco delle immagini disponibili per assicurarti che la nuova immagine sia stata creata con successo.

docker images

5. Avvia un Container dall’Immagine Personalizzata

Avvia un container utilizzando la nuova immagine personalizzata creata.

docker run -it my-ubuntu-image

Questo container dovrebbe includere strumenti come curl e vim come specificato nel Dockerfile.

5. Configurazione dell’Ambiente Linguistico Giapponese in un Container Ubuntu

Di default, l’immagine Docker Ubuntu è impostata su inglese. Se hai bisogno di utilizzare il giapponese, sono richieste configurazioni aggiuntive.

Configurazione del Locale Giapponese

Per abilitare la visualizzazione e l’input giapponese in un container Ubuntu, installa i pacchetti linguistici necessari.

1. Installa i Pacchetti Richiesti

apt update
apt install -y language-pack-ja locales

2. Configura il Locale

Imposta il locale e applica le impostazioni.

locale-gen ja_JP.UTF-8
update-locale LANG=ja_JP.UTF-8

3. Applica le Impostazioni

export LANG=ja_JP.UTF-8

Configurazione dell’Input Giapponese

Per abilitare l’input di testo giapponese nel terminale, installa ibus-mozc.

apt install -y ibus-mozc

Se stai utilizzando un ambiente GUI, aggiungi le seguenti variabili d’ambiente:

export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus

Utilizzo di Applicazioni GUI

Per eseguire applicazioni GUI all’interno di un container Docker, puoi utilizzare un server X.

Installa un server X sulla macchina host e avvia il container con X11 abilitato.

docker run -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix my-ubuntu-image

6. Ottimizzazione e Riduzione delle Dimensioni delle Immagini Docker

Ottimizzare le immagini Docker migliora la velocità di avvio dei container e riduce l’utilizzo di spazio su disco. Questa sezione introduce metodi per creare immagini leggere.

Creazione di un’Immagine Leggera Basata su Ubuntu

L’immagine predefinita ubuntu:latest è relativamente grande. Per ridurre le dimensioni del container, considera l’uso di un’alternativa più piccola come ubuntu:minimal.

FROM ubuntu:minimal

In alternativa, puoi usare Alpine Linux, che è significativamente più piccola di Ubuntu.

FROM alpine:latest
RUN apk add --no-cache bash curl

Questo metodo può ridurre le dimensioni dell’immagine di diverse centinaia di megabyte.

Rimozione di File Inutili per Ridurre le Dimensioni dell’Immagine

Dopo aver installato i pacchetti con apt-get, puoi rimuovere i file di cache non necessari per minimizzare le dimensioni dell’immagine.

RUN apt update && apt install -y curl vim 
    && apt clean 
    && rm -rf /var/lib/apt/lists/*

Il comando rm -rf /var/lib/apt/lists/* elimina l’elenco dei pacchetti, riducendo i dati superflui.

Utilizzo di Build Multi-Stage

Con le build multi-stage, puoi usare un container temporaneo per compilare le dipendenze mantenendo l’immagine finale leggera.

FROM ubuntu as builder
RUN apt update && apt install -y gcc

FROM ubuntu:minimal
COPY --from=builder /usr/bin/gcc /usr/bin/gcc

Questa tecnica consente di escludere gli strumenti di sviluppo non necessari dall’immagine finale, rendendola notevolmente più piccola.

7. Guida Pratica: Sviluppare Applicazioni in un Container Ubuntu

In questa sezione, configureremo un ambiente di sviluppo all’interno di un container Ubuntu e dimostreremo come sviluppare applicazioni usando Docker.

Configurazione di un Ambiente di Sviluppo Python

Per creare un ambiente di sviluppo Python all’interno di un container Docker, utilizza il seguente Dockerfile.

FROM ubuntu:latest
RUN apt update && apt install -y python3 python3-pip
CMD ["python3"]

Costruisci l’immagine ed esegui il container.

docker build -t python-dev .
docker run -it python-dev

All’interno del container, puoi eseguire il comando python3 per avviare script Python e sviluppare applicazioni.

Configurazione di un Ambiente di Sviluppo Node.js

Per lo sviluppo con Node.js, utilizza il seguente Dockerfile.

FROM ubuntu:latest
RUN apt update && apt install -y nodejs npm
CMD ["node"]

Costruisci ed esegui il container.

docker build -t node-dev .
docker run -it node-dev

Con questa configurazione, puoi usare il comando node per eseguire codice JavaScript e sviluppare applicazioni in un ambiente controllato.

8. FAQ & Risoluzione dei Problemi

Durante l’uso di Docker, potresti incontrare vari problemi. Questa sezione fornisce soluzioni ai problemi più comuni e alle domande frequenti.

Differenza tra Docker e Macchine Virtuali

  • Docker: Condivide il kernel del sistema operativo host, risultando leggero e consentendo avvii rapidi dei container.
  • Macchine Virtuali (VM): Ogni VM ha il proprio sistema operativo, consumando più risorse e richiedendo più tempo per l’avvio.

Docker è più efficiente nell’utilizzo delle risorse, rendendolo ideale per ambienti di sviluppo e distribuzioni automatizzate.

Persistenza dei Dati in un Container Ubuntu

Per mantenere i dati anche dopo l’arresto di un container, utilizza il montaggio di volumi.

docker run -v my_data:/data ubuntu

Il volume my_data conserva i dati in modo persistente, permettendo di accedervi anche dopo la rimozione del container.

Errori Comuni e Soluzioni

1. Errore permission denied

Se visualizzi un errore permission denied durante l’esecuzione di comandi Docker, il tuo utente potrebbe non far parte del gruppo docker.

Aggiungi il tuo utente al gruppo docker con il seguente comando“` sudo usermod -aG docker $USER

Dopo aver eseguito questo comando, disconnettiti e riconnettiti per applicare le modifiche.

#### 2. Errore `image not found`

Se un'immagine è stata rimossa da Docker Hub, specifica un tag diverso per scaricare una versione valida.

docker pull ubuntu:22.04 “`

Specificando una versione, puoi assicurarti di scaricare un’immagine funzionante.