Guida introduttiva a Docker: inizia rapidamente a containerizzare la tua applicazione

2/18/2026
6 min read
# Guida introduttiva a Docker: inizia rapidamente a containerizzare la tua applicazione

Docker è diventato una parte indispensabile dello sviluppo e della distribuzione di software moderni. Nonostante le discussioni dilaganti su Kubernetes, Docker rimane lo strumento preferito da molte aziende per costruire, testare e distribuire applicazioni. Questo articolo ti guiderà rapidamente attraverso Docker, comprendendo i suoi concetti fondamentali e fornendo un esempio pratico per aiutarti a iniziare a containerizzare la tua applicazione.

## Concetti fondamentali di Docker

Prima di iniziare con la pratica, è essenziale comprendere alcuni concetti fondamentali di Docker:

*   **Immagine (Image):** Un'immagine è un modello di sola lettura che contiene tutto il necessario per eseguire un'applicazione: codice, ambiente di runtime, strumenti di sistema, librerie e dipendenze. Simile a un'immagine di macchina virtuale, ma più leggera.

*   **Contenitore (Container):** Un contenitore è un'istanza in esecuzione creata da un'immagine. È un'istanza di runtime di un'immagine e contiene l'applicazione e tutte le sue dipendenze. I contenitori sono isolati l'uno dall'altro e hanno il proprio file system, processi e spazio di rete.

*   **Docker Hub:** Docker Hub è un repository di immagini pubblico da cui è possibile scaricare immagini predefinite o caricare le proprie immagini. Simile a GitHub, ma specializzato per le immagini Docker.

*   **Dockerfile:** Un Dockerfile è un file di testo che contiene tutte le istruzioni per costruire un'immagine Docker. Scrivendo un Dockerfile, puoi automatizzare il processo di creazione dell'immagine.

*   **Docker Compose:** Docker Compose è uno strumento per definire ed eseguire applicazioni Docker multi-container. Ti consente di configurare i servizi dell'applicazione utilizzando un file YAML, quindi utilizzare un singolo comando per avviare o arrestare tutti i servizi.

## Installazione di Docker

Innanzitutto, è necessario installare Docker. Docker fornisce pacchetti di installazione per vari sistemi operativi. Visita il [sito Web ufficiale di Docker](https://www.docker.com/get-started/) e segui le istruzioni corrispondenti per l'installazione.

Una volta completata l'installazione, puoi verificare se Docker è installato correttamente eseguendo il comando `docker --version`.

## Containerizzare una semplice applicazione Python

Creeremo una semplice applicazione Python e la containerizzeremo utilizzando Docker.

### 1. Crea l'applicazione Python

Crea un file denominato `app.py` contenente il seguente codice:

```python
from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello, Docker!"

if __name__ == "__main__":
    app.run(debug=True, host='0.0.0.0')

Questa semplice applicazione Flask restituirà "Hello, Docker!" sul percorso radice /.

2. Crea il file requirements.txt

L'applicazione dipende dalla libreria Flask, quindi dobbiamo creare un file requirements.txt per dichiarare queste dipendenze.

Flask

3. Crea il Dockerfile

Crea un file denominato Dockerfile e aggiungi il seguente contenuto:

# Usa l'immagine Python ufficiale come immagine di base
FROM python:3.9-slim-buster

# Imposta la directory di lavoro
WORKDIR /app

# Copia il file requirements.txt nella directory di lavoro
COPY requirements.txt .

# Installa le dipendenze
RUN pip install --no-cache-dir -r requirements.txt
```# 将应用程序代码复制到工作目录
COPY app.py .

# 暴露端口 5000
EXPOSE 5000

# 定义启动命令
CMD ["python", "app.py"]

Dockerfile 说明:

  • FROM python:3.9-slim-buster: Specifica l'immagine di base come una versione ridotta di Python 3.9.
  • WORKDIR /app: Imposta la directory di lavoro all'interno del container su /app.
  • COPY requirements.txt .: Copia il file requirements.txt dalla directory corrente alla directory /app del container.
  • RUN pip install --no-cache-dir -r requirements.txt: Esegue il comando pip all'interno del container per installare le dipendenze specificate nel file requirements.txt. L'opzione --no-cache-dir può ridurre le dimensioni dell'immagine.
  • COPY app.py .: Copia il file app.py dalla directory corrente alla directory /app del container.
  • EXPOSE 5000: Dichiara che il container ascolterà sulla porta 5000.
  • CMD ["python", "app.py"]: Definisce il comando da eseguire all'avvio del container.

4. Costruire l'immagine Docker

Nella directory contenente il Dockerfile, esegui il seguente comando per costruire l'immagine Docker:

docker build -t my-python-app .
  • docker build: Comando per costruire l'immagine.
  • -t my-python-app: Assegna un nome all'immagine (my-python-app).
  • .: Specifica la directory in cui si trova il Dockerfile (la directory corrente).

Il processo di costruzione potrebbe richiedere del tempo, a seconda della velocità della rete e delle dimensioni delle dipendenze.

5. Eseguire il container Docker

Utilizza il seguente comando per eseguire il container Docker:

docker run -d -p 5000:5000 my-python-app
  • docker run: Comando per eseguire il container.
  • -d: Esegue il container in modalità detached (in background).
  • -p 5000:5000: Mappa la porta 5000 dell'host alla porta 5000 del container.
  • my-python-app: Specifica il nome dell'immagine da utilizzare.

6. Verificare l'applicazione

Nel browser, visita http://localhost:5000 e dovresti vedere "Hello, Docker!".

7. Arrestare ed eliminare il container

Utilizza il seguente comando per arrestare il container:

docker stop 

`` Puoi visualizzare tramite il comando docker ps.

Utilizza il seguente comando per eliminare il container:

docker rm 

Introduzione a Docker Compose

Se la tua applicazione è composta da più servizi, puoi utilizzare Docker Compose per gestirli.

1. Creare il file docker-compose.yml

Crea un file chiamato docker-compose.yml e aggiungi il seguente contenuto:

version: "3.9"
services:
  web:
    image: my-python-app
    ports:
      - "5000:5000"

docker-compose.yml 说明:

  • version: "3.9": Specifica la versione del file Docker Compose.
  • services: Definisce i servizi dell'applicazione.
  • web: Definisce un servizio chiamato "web".
  • image: my-python-app: Specifica l'immagine utilizzata dal servizio.
  • ports: Definisce il mapping delle porte.

2. Avviare l'applicazione

Nella directory contenente il file docker-compose.yml, esegui il seguente comando per avviare l'applicazione:

docker-compose up -d
  • docker-compose up: Comando per avviare l'applicazione.
  • -d: Esegue i container in modalità detached (in background).

3. Arrestare l'applicazione

Utilizza il seguente comando per arrestare l'applicazione:

docker-compose down

Best practice per la sicurezza di Docker

Come si evince dalla discussione, la sicurezza delle immagini Docker è una questione importante. Ecco alcune best practice per la sicurezza di Docker:

  • Utilizzare immagini ufficiali: Ove possibile, utilizzare le immagini fornite ufficialmente, che sono generalmente sottoposte a scansioni di sicurezza e manutenzione.
  • Scansionare le immagini per individuare vulnerabilità: Utilizzare strumenti come Trivy per scansionare le immagini alla ricerca di vulnerabilità note e aggiornare tempestivamente le immagini.
  • Utilizzare il principio del minimo privilegio: Evitare di eseguire i container come utente root.
  • Limitare le risorse del container: Utilizzare i cgroups per limitare l'utilizzo di CPU e memoria da parte del container.
  • Aggiornare regolarmente le immagini: Mantenere aggiornate le immagini per correggere le vulnerabilità di sicurezza.
  • Utilizzare strumenti di scansione della sicurezza: Strumenti come Snyk, Clair, ecc. possono essere integrati nel tuo flusso CI/CD per scansionare automaticamente le vulnerabilità delle immagini.

ConclusioneQuesto articolo fornisce una guida rapida per iniziare con Docker, coprendo i concetti fondamentali, i passaggi di installazione e un semplice esempio di containerizzazione di un'applicazione Python. Apprendendo queste nozioni di base, puoi iniziare a utilizzare Docker per costruire, testare e distribuire le tue applicazioni. Ricorda, la sicurezza è fondamentale, presta sempre attenzione alla sicurezza delle immagini Docker e adotta misure appropriate per proteggere le tue applicazioni. Sebbene Kubernetes sia potente nell'orchestrazione di container su larga scala, Docker rimane una soluzione semplice ed efficace in molti scenari. Padroneggiando Docker, sarai in grado di affrontare meglio le sfide dello sviluppo e della distribuzione di software moderni.

Published in Technology

You Might Also Like