Come assegnare un IP statico a un container Docker

0
719

Gli indirizzi IP statici non cambiano quando i container o i servizi vengono arrestati e avviati, rendendoli utili per il networking permanente. L'assegnazione di indirizzi IP statici ai contenitori Docker è un modo semplice per renderli più accessibili.

Perché utilizzare un IP statico?

Esistono due tipi di “IP statico”; indirizzi IP privati ​​utilizzati per la rete interna all'interno di un server e indirizzi IP pubblici utilizzati per connettersi all'esterno del server, spesso tramite Internet.

Se devi impostare un indirizzo IP pubblico per un contenitore, ti consigliamo di utilizzare le associazioni di porta. Puoi “pubblicare” porte sul contenitore Docker per essere accessibili dall'host. Sebbene esistano configurazioni di rete più avanzate, questa è di gran lunga la più semplice e comune. Ad esempio, associando la porta 80 (HTTP) sull'host in modo che punti a un contenitore NGINX:

docker run –publish=80:8080 nginx

Se vuoi creare un indirizzo IP privato statico, dovresti considerare se hai bisogno di usarne uno. La maggior parte delle volte, vorrai che un IP statico comunichi con un contenitore da un altro o dall'host. Nella maggior parte dei casi, il networking integrato di Docker è in grado di gestirlo.

Docker viene fornito con una rete predefinita, ma se ne crei una tua, puoi fornire alias ai contenitori quando vengono avviati in quella rete. Questo alias si risolverà automaticamente nell'IP privato del contenitore. Ad esempio, il contenitore NGINX qui può accedere all'istanza MongoDB con la stringa di connessione mongodb://mongohost:27017.

docker network create example docker run –net example –name nginx -d nginx docker network connect example – -alias mongohost mongodb Pubblicità

Per saperne di più, puoi leggere la documentazione di Docker sulle reti bridge definite dall'utente.

Tuttavia, ci sono ancora molte volte in cui vorrai specificare manualmente un indirizzo IP privato, ad esempio accedendo ai contenitori direttamente dall'host. Dovrai comunque utilizzare una rete Docker personalizzata per farlo, ma è facile da configurare.

Impostazione statica IP

Per prima cosa, devi configurare una rete Docker e, poiché ci interessa l'indirizzo IP, devi specificare una sottorete fissa:

rete docker create –subnet=172.20.0.0/16 rete personalizzata

CORRELATO: Cosa sono le sottoreti e come influiscono sulla mia rete?

Quindi, puoi eseguire un contenitore, specificando la rete con il flag –net, e specificando l'IP con il flag -ip:

docker run –net customnetwork –ip 172.20.0.10 -d container

Puoi verificare che l'indirizzo sia corretto controllandolo nel container con exec -t bin/bash o ispezionando l'elenco dei contenitori Docker:

docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' name_or_id

Utilizzo di Docker Compose

Docker Compose è uno strumento utilizzato per avviare più contenitori con impostazioni predefinite. Ciò include la configurazione di reti con sottoreti specifiche e puoi collegare contenitori a reti con IP fissi utilizzando il blocco ipv4_address config mostrato qui:

versione: '2' servizi: server web: immagine: nginx nome_contenitore: reti server web: customnetwork: ipv4_address: 172.20.0.10 reti: customnetwork: ipam: config: – subnet: 172.20.0.0/16