Docker - Container e Host

Ciao, appassionati di tecnologia in erba! Sono entusiasta di intraprendere questo viaggio con Docker insieme a voi. Come vostro insegnante virtuale con anni di esperienza, vi guiderò attraverso il mondo emozionante dei container e degli host. Non preoccupatevi se siete nuovi alla programmazione - inizieremo dalle basi e costruiremo passo dopo passo. Tuffiamoci!

Docker - Container & Hosts

Immagini Docker

Immaginate di preparare i bagagli per un viaggio. Creereste un elenco di tutto il necessario, vero? Ecco esattamente cosa è un'immagine Docker - un blueprint di tutto ciò che un container ha bisogno per funzionare. È come una ricetta per la vostra applicazione, inclusi il codice, l'ambiente di esecuzione, le librerie e gli strumenti di sistema.

Creare La Tua Prima Immagine Docker

Creiamo un'immagine Docker semplice per un'applicazione "Hello, World!":

# Dockerfile
FROM python:3.9-slim
WORKDIR /app
COPY . /app
CMD ["python", "hello.py"]

Ora, analizziamo questo:

  1. FROM python:3.9-slim: È come dire, "Voglio iniziare con un ambiente Python 3.9 minimo."
  2. WORKDIR /app: Stiamo impostando il nostro spazio di lavoro, come creare una nuova cartella per il nostro progetto.
  3. COPY . /app: Stiamo copiando i nostri file locali nel container.
  4. CMD ["python", "hello.py"]: Questo è il comando che verrà eseguito quando avvieremo il container.

Per costruire questa immagine, eseguiremmo:

docker build -t my-hello-world .

Eseguire un Container

Ora che abbiamo la nostra immagine, portiamola alla vita! Eseguire un container è come avviare un computer virtuale pre-caricato con la tua applicazione.

Esecuzione di Base del Container

docker run my-hello-world

Questo comando avvierà un container basato sulla nostra immagine my-hello-world ed eseguirà lo script hello.py.

Modalità Interattiva

A volte, vuoi interagire con il tuo container. È come aprire un terminale direttamente all'interno del container:

docker run -it my-hello-world /bin/bash

Le flag -it rendono il container interattivo, e /bin/bash avvia una shell bash.

Elencare Tutti i Containers

Mentre lavori con Docker, creerai più container. È importante tenere traccia di essi. Pensate a questo come controllare quali applicazioni sono attualmente in esecuzione sul vostro computer.

docker ps

Questo comando mostra tutti i container in esecuzione. Per vedere tutti i container, inclusi quelli arrestati:

docker ps -a

Ecco una tabella utile delle opzioni di docker ps:

Opzione Descrizione
-a, --all Mostra tutti i container (di default mostra solo quelli in esecuzione)
-q, --quiet Mostra solo gli ID dei container
-s, --size Mostra le dimensioni totali dei file
--format Stampa i container in modo gradevole utilizzando un template Go

Arrestare un Container

Come chiudere un'applicazione sul tuo computer, puoi arrestare un container quando hai finito di usarlo.

Arresto Graduale

docker stop <container_id>

Questo invia un segnale SIGTERM, permettendo al container di arrestarsi gradualmente.

Arresto Forzato

docker kill <container_id>

È come forzare la chiusura di un'applicazione. Usalo quando docker stop non funziona.

Rimuovere un Container

Dopo aver arrestato un container, potresti volerlo rimuovere completamente:

docker rm <container_id>

Consiglio professionale: Puoi combinare l'arresto e la rimozione in un solo comando:

docker rm -f <container_id>

Conclusione

Complimenti! Avete taken i primi passi nel mondo dei container e degli host Docker. Ricordate, lavorare con Docker è come gestire una flotta di piccoli computer specializzati. Ogni container è un ambiente autonomo, pronto per eseguire la tua applicazione in modo consistente su qualsiasi sistema.

Mentre chiudiamo, ecco una analogia divertente: i container Docker sono come food truck. Ogni truck (container) ha tutto il necessario per preparare e servire la sua specialità (la tua applicazione). Puoi facilmente spostare questi truck, avviarli o chiuderli secondo necessità.

Nella nostra prossima lezione, esploreremo più a fondo la rete Docker e la persistenza dei dati. Finora, felice containerizzazione!

Credits: Image by storyset