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 container 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 su Internet.
Se devi configurare un indirizzo IP pubblico per un container, ti consigliamo di utilizzare i collegamenti alle porte. Puoi "pubblicare" le 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, vincolare 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 è necessario utilizzarne uno. Il più delle volte, vorrai che un IP statico parli con un container da un altro o dall'host. Nella maggior parte dei casi, la rete integrata di Docker può gestirlo.
Docker viene fornito con una rete predefinita, ma se ne crei una tua, puoi assegnare alias ai contenitori quando viene avviato 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
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 accedere ai contenitori direttamente dall'host. Dovrai comunque utilizzare una rete Docker personalizzata per farlo, ma è facile da configurare.
Impostazione di IP statici
Innanzitutto, dovrai configurare una rete Docker e, poiché l'indirizzo IP è a noi molto importante, dovrai specificare una sottorete fissa:
docker network create --subnet=172.20.0.0/16 customnetwork
RELAZIONATO: Cosa sono le sottoreti e in che modo influiscono sulla mia rete?
Quindi, puoi eseguire un container, specificando la rete con --net
flag e specificando l'IP con -ip
bandiera:
docker run --net customnetwork --ip 172.20.0.10 -d container
Puoi verificare che l'indirizzo sia corretto controllandolo nel contenitore con exec -t bin/bash
o esaminando 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 allegare contenitori a reti con IP fissi utilizzando il ipv4_address
blocco di configurazione mostrato qui:
version: '2' services: webserver: image: nginx container_name: web-server networks: customnetwork: ipv4_address: 172.20.0.10 networks: customnetwork: ipam: config: - subnet: 172.20.0.0/16