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!
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:
-
FROM python:3.9-slim
: È come dire, "Voglio iniziare con un ambiente Python 3.9 minimo." -
WORKDIR /app
: Stiamo impostando il nostro spazio di lavoro, come creare una nuova cartella per il nostro progetto. -
COPY . /app
: Stiamo copiando i nostri file locali nel container. -
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