Come usare Docker su Ubuntu: Guida completa all’installazione, alle immagini, al Dockerfile e all’ottimizzazione

目次

1. Introduzione

Che 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 tradizionali macchine virtuali (VM), i container condividono il kernel del sistema operativo host, consentendo avvii più rapidi e un consumo di risorse inferiore.

Vantaggi dell’utilizzo di Docker su Ubuntu

Ubuntu è una delle distribuzioni Linux con una forte compatibilità con Docker. I motivi principali includono:

  • Supporto ufficiale : Docker supporta ufficialmente Ubuntu, permettendo un’installazione semplice tramite il repository ufficiale.
  • Gestione pacchetti stabile : Il gestore di pacchetti APT di Ubuntu rende la gestione delle versioni lineare.
  • Ampio supporto della community : Ubuntu ha una vasta base di utenti a livello globale, facilitando la risoluzione dei problemi quando si presentano.

Cosa imparerai in questo articolo

Questa guida spiega i seguenti argomenti passo dopo passo:

  1. Come installare Docker su Ubuntu
  2. Operazioni di base per le immagini Docker
  3. Creare immagini personalizzate usando Dockerfile
  4. Configurare la localizzazione giapponese in un container Ubuntu
  5. Ottimizzare e ridurre le dimensioni delle immagini Docker
  6. Sviluppare applicazioni all’interno di container Ubuntu
  7. Errori comuni e risoluzione dei problemi

Il contenuto è utile sia per principianti sia per utenti avanzati, quindi sentiti libero di consultarlo in qualsiasi fase.

2. Installare Docker su Ubuntu

Installare Docker usando il repository ufficiale

Su Ubuntu è possibile installare Docker facilmente tramite il repository ufficiale. Segui i passaggi qui sotto per configurare l’ambiente.

1. Rimuovere i pacchetti Docker esistenti

Ubuntu potrebbe includere un pacchetto chiamato docker.io, che potrebbe essere una versione più vecchia. Rimuovilo prima di installare l’ultima versione di Docker.

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

2. Installare i pacchetti richiesti

Installa i pacchetti di dipendenza prima dell’installazione.

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

3. Aggiungere 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. Installare Docker

Dopo aver aggiunto il repository, installa Docker.

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

5. Verificare l’installazione

Controlla che Docker sia installato correttamente visualizzando le informazioni sulla versione.

docker --version

Configurazione iniziale dopo l’installazione

1. Avviare e abilitare il servizio Docker

Avvia il servizio Docker e abilita l’avvio automatico al boot.

sudo systemctl start docker
sudo systemctl enable docker

2. Consentire agli utenti non root di eseguire Docker

Per impostazione predefinita, solo root può eseguire Docker. Consenti agli utenti normali di eseguire i comandi Docker.

sudo usermod -aG docker $USER

Disconnettiti e riconnettiti per applicare le modifiche.

3. Testare il funzionamento di Docker

Esegui il container hello-world usando un account utente normale.

docker run hello-world

Se l’output include “Hello from Docker!”, l’installazione è avvenuta con successo.

3. Operazioni di base delle immagini Docker

Che cos’è un’immagine Docker?

Un’immagine Docker funge da modello per creare i container. Utilizzando un’immagine Docker basata su Ubuntu, puoi avviare rapidamente un ambiente Ubuntu.

Scaricare le immagini Ubuntu da Docker Hub

Docker Hub fornisce numerose immagini Docker ufficiali. Per scaricare un’immagine Ubuntu, esegui:

docker pull ubuntu

Avviare e arrestare i container

Usa l’immagine Ubuntu scaricata per avviare un container:

docker run -it ubuntu bash

Questo apre una shell all’interno del contenitore Ubuntu, consentendoti di operare al suo interno.

Elenca i contenitori

Mostra i contenitori in esecuzione:

docker ps

Mostra tutti i contenitori, inclusi quelli arrestati:

docker ps -a

Arrestare e rimuovere i contenitori

Arresta un contenitore in esecuzione:

docker stop [container ID or name]

Rimuovi un contenitore non necessario:

docker rm [container ID or name]

Gestire le immagini Docker

Elenca le immagini Docker scaricate:

docker images

Rimuovi un’immagine:

docker rmi [image ID]

4. Creare immagini personalizzate con Dockerfile

Cos’è un Dockerfile?

Un Dockerfile è un file di configurazione usato per costruire immagini Docker. In base alle istruzioni scritte nel Dockerfile, è possibile creare immagini Docker personalizzate. Questo consente di unificare gli ambienti di sviluppo o creare immagini che includono i pacchetti richiesti.

Sintassi di base del Dockerfile

Un Dockerfile tipicamente include i seguenti comandi:

CommandDescription
FROMSpecifies the base image
RUNExecutes commands to build the image
COPYCopies files into the container
WORKDIRSets the working directory
CMDDefault command executed when the container starts
ENTRYPOINTDefines the entry point of the container

Creare un’immagine personalizzata basata su Ubuntu

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

1. Crea una directory di lavoro

Innanzitutto, crea una nuova directory di progetto e spostati al suo interno.

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

2. Crea un Dockerfile

Crea un Dockerfile all’interno della directory e scrivi il seguente contenuto:

# Base Ubuntu official image
FROM ubuntu:latest

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

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

# Set working directory
WORKDIR /workspace

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

3. Costruisci l’immagine Docker

Costruisci un’immagine personalizzata dal tuo Dockerfile:

docker build -t my-ubuntu-image .

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

4. Verifica l’immagine

Controlla la tua immagine appena costruita:

docker images

5. Avvia un contenitore

Avvia un contenitore dall’immagine personalizzata:

docker run -it my-ubuntu-image

Questa immagine include strumenti come curl e vim.

5. Configurare un ambiente giapponese nei contenitori Ubuntu

L’immagine predefinita di Ubuntu utilizza un ambiente in inglese. Per usare il giapponese, è necessaria una configurazione aggiuntiva.

Impostare la locale giapponese

Per abilitare la visualizzazione e l’input giapponesi in un contenitore Ubuntu, installa la locale giapponese.

1. Installa i pacchetti richiesti

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

2. Configura la locale

Genera e applica la locale:

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

3. Applica le impostazioni

export LANG=ja_JP.UTF-8

Configurare l’input giapponese

Per inserire caratteri giapponesi nel terminale, installa ibus-mozc:

apt install -y ibus-mozc

Se usi applicazioni GUI, aggiungi le seguenti variabili d’ambiente:

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

Usare applicazioni GUI

Per eseguire applicazioni GUI all’interno di un contenitore Docker, utilizza un server X sulla macchina host.

Avvia il contenitore con X11 abilitato:

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

6. Ottimizzare e ridurre le immagini Docker

Le immagini Docker possono essere ottimizzate per migliorare la velocità di avvio dei contenitori e ridurre l’uso di spazio di archiviazione. Ecco diverse tecniche per creare immagini leggere.

Come creare un’immagine leggera basata su Ubuntu

L’immagine predefinita ubuntu:latest è relativamente grande. Usare un’opzione più leggera come ubuntu:minimal aiuta a ridurre le dimensioni del contenitore.

FROM ubuntu:minimal

Un’altra opzione è usare Alpine Linux, che è significativamente più piccolo di Ubuntu.

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

Usare Alpine può ridurre le dimensioni dell’immagine di diverse centinaia di megabyte.

Ridurre le dimensioni dell’immagine rimuovendo file non necessari

Puoi ridurre le dimensioni dell’immagine eliminando i file di cache non necessari creati da apt-get.

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

In particolare, il comando rm -rf /var/lib/apt/lists/* rimuove gli elenchi dei pacchetti e i dati inutilizzati.

Utilizzo di build multi-stage

Le build multi-stage ti consentono di utilizzare gli strumenti solo durante il processo di build 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

In questo modo, eviti di includere strumenti di sviluppo nell’immagine finale, ottenendo un’impronta molto più piccola.

7. Esempio pratico: sviluppo di applicazioni in container Ubuntu

Questa sezione introduce come configurare ambienti di sviluppo all’interno di container Ubuntu.

Configurazione di un ambiente di sviluppo Python

Crea il seguente Dockerfile per configurare un ambiente di sviluppo Python in un container Ubuntu:

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

Questo ambiente ti permette di utilizzare il comando python3 per lo sviluppo e il testing di script.

Configurazione di un ambiente di sviluppo Node.js

Per configurare un ambiente di sviluppo 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

Questo ambiente consente l’esecuzione di JavaScript e lo sviluppo di applicazioni con il comando node.

8. FAQ & Risoluzione dei problemi

L’uso di Docker può comportare vari problemi. Di seguito le domande più comuni e le soluzioni tipiche.

Differenza tra Docker e macchine virtuali

  • Docker: Condivide il kernel del sistema operativo host, rendendolo leggero con avvio rapido dei container.
  • Macchine virtuali (VM): Ogni VM include il proprio OS, risultando in un maggiore consumo di risorse e avvio più lento.

Docker eccelle nell’ottimizzazione delle risorse ed è adatto per ambienti di sviluppo e distribuzione automatizzata.

Persistenza dei dati nei container Ubuntu

Per conservare i dati anche dopo l’arresto di un container, utilizza mount di volumi:

docker run -v my_data:/data ubuntu

Anche se il container viene eliminato, i dati memorizzati nel volume my_data possono essere riutilizzati.

Errori comuni e soluzioni

1. Errore permission denied

Se vedi permission denied quando provi a eseguire Docker, il tuo utente potrebbe non appartenere al gruppo docker.

Aggiungi l’utente al gruppo Docker:

sudo usermod -aG docker $USER

Disconnettiti e riconnettiti per applicare la modifica.

2. Errore image not found

Se un’immagine è stata rimossa da Docker Hub, specifica un tag più recente durante il pull:

docker pull ubuntu:22.04

Specificare una versione esplicita garantisce che venga recuperata l’immagine corretta.

年収訴求