Guida per Principianti su Docker Networking

Ciao a tutti, futuri maestri di Docker! Sono entusiasta di essere il vostro guida in questo emozionante viaggio nel mondo della rete Docker. Come qualcuno che ha insegnato scienze informatiche per anni, posso dirvi che comprendere le reti Docker è come imparare a navigare nelle affollate strade di una nuova città - potrebbe sembrare schiacciante all'inizio, ma una volta che ci si fa l'abitudine, si zallicherà come un locale in un batter d'occhio!

Docker - Networking

Cos'è la Rete Docker?

Prima di immergerci nei dettagli, iniziiamo con le basi. La rete Docker è essenzialmente il modo in cui i container Docker comunicano tra loro e con il mondo esterno. Pensateci come il sistema postale dei vostri container - è il modo in cui inviano e ricevono messaggi e dati.

Elencare Tutte le Reti Docker

Iniziamo la nostra avventura imparando a vedere quali reti sono disponibili nel nostro ambiente Docker. È come consultare una mappa della nostra nuova città per vedere quali strade possiamo prendere.

Per elencare tutte le reti Docker, utilizziamo questo semplice comando:

docker network ls

Quando eseguite questo comando, vedrete un output simile a questo:

ID RETE     NOME      DRIVER    SCOPE
9f904ee27bf5   bridge    bridge    local
95e74588f40d   host      host      local
6dd90d006c9b   none      null      local

Ecco una spiegazione:

  • ID RETE: Un identificatore univoco per ogni rete
  • NOME: Il nome della rete
  • DRIVER: Il driver di rete utilizzato (ne parleremo di più più tardi)
  • SCOPE: La portata della rete (locale all'host Docker o swarm)

Ispezionare una Rete Docker

Ora che possiamo vedere le nostre reti, diamo un'occhiata più da vicino a una di esse. È come ingrandire una strada specifica sulla nostra mappa.

Per ispezionare una rete Docker, utilizziamo:

docker network inspect [NOME RETE]

Ad esempio, ispezioniamo la rete predefinita 'bridge':

docker network inspect bridge

Questo comando restituirà molte informazioni dettagliate sulla rete in formato JSON. È come ottenere un rapporto dettagliato su tutto ciò che accade in quella strada - chi ci vive, come sono le case, ecc.

Creare la Propria Nuova Rete

Bene, ora siamo pronti a costruire la nostra propia strada! Creare una nuova rete in Docker è sorprendentemente semplice:

docker network create [OPZIONI] [NOME RETE]

Creiamo un semplice rete bridge:

docker network create my_awesome_network

Congratulazioni! Avete appena creato la vostra prima rete Docker. È come se aveste appena posato una nuova strada nella nostra città Docker.

Per verificare che la nostra rete sia stata creata, possiamo utilizzare di nuovo il nostro fidato comando docker network ls:

docker network ls

Dovreste ora vedere la vostra nuova rete nell'elenco!

Driver di Rete

In Docker, i driver di rete sono come diversi tipi di strade. Esaminiamo i principali:

Driver Descrizione
Bridge Il driver di rete predefinito. Buono per container standalone che devono comunicare.
Host Rimuove l'isolamento di rete tra il container e l'host Docker.
Overlay Utilizzato per connettere più demoni Docker insieme. Buono per i servizi swarm.
Macvlan Permette di assegnare un indirizzo MAC a un container, facendolo apparire come un dispositivo fisico sulla rete.
None Disabilita tutte le reti per un container.

Quando si crea una rete, si può specificare il driver. Ad esempio:

docker network create --driver overlay my_overlay_network

Questo crea una nuova rete overlay, che è ottima quando si lavora con Docker Swarm.

Connettere Container alle Reti

Ora che abbiamo le nostre reti, impariamo come connettere i nostri container a loro. È come decidere su quale strada dovrebbe essere la nostra casa (container).

Quando avviate un nuovo container, potete specificare a quale rete dovrebbe connettersi:

docker run --network=my_awesome_network nginx

Questo comando avvia un container nginx e lo connette alla nostra 'my_awesome_network'.

Potete anche connettere un container esistente a una rete:

docker network connect my_awesome_network my_existing_container

E se volete disconnettere un container da una rete:

docker network disconnect my_awesome_network my_existing_container

Un Esempio Reale

Mettiamo tutto insieme con un esempio pratico. Immaginate di costruire una semplice applicazione web con un frontend e un backend. Vogliamo che questi container possano comunicare tra loro, ma non vogliamo esporre il backend al mondo esterno.

Prima, creiamo la nostra rete:

docker network create my_app_network

Ora, avviamo il nostro container backend e lo connettiamo alla nostra rete:

docker run --name backend --network=my_app_network -d my-backend-image

E infine, il nostro container frontend:

docker run --name frontend --network=my_app_network -p 80:80 -d my-frontend-image

Ora il nostro frontend e backend container possono comunicare tra loro sulla 'my_app_network', ma solo il frontend è esposto al mondo esterno sulla porta 80.

Conclusione

Eccoci, gente! Abbiamo viaggiato attraverso le basi della rete Docker, dalla lista e ispezione delle reti alla creazione delle nostre e alla connessione dei container. Ricordate, come ogni abilità, padroneggiare la rete Docker richiede pratica. Non abbiate paura di esperimentare e provare diverse configurazioni.

Mentre chiudiamo, mi ricordo di uno studente che una volta mi disse che imparare la rete Docker sembrava come imparare a nuotare - all'inizio, si sente come se si stia annegando nell'informazione, ma una volta che si capisce, si scivola attraverso i concetti con facilità. Quindi continuate a remare, e prima di sapere, farete il bagno nelle reti Docker!

Buon Dockering, e possa i vostri container sempre trovare la loro strada a casa!

Credits: Image by storyset