Fijar direcciones IP en contenedores Docker

Para asegurar que un contenedor Docker tenga IP fija, una opción es la de crear una subred propia para luego vincularla al contenedor en particular, para ello:

$ docker network create --subnet=IP_SUBRED/16 subred

Luego, al contenedor en cuestión se le pasa por parámetro el nombre de la subred y la dirección IP asignada.

$ docker run --net subred --ip IP -d contenedor

Para el caso de una configuración compleja de Home Assistant, donde tenemos una serie de contenedores, como MariaDB y NGINX, tendríamos que reconstruir estos últimos tras asignarles direcciones IP, 172.18.0.101 y 172.18.0.102 respectivamente:

$ docker network create --subnet=172.18.0.0/16 domonet
$ docker run -d --net domonet --ip 172.18.0.101 --restart unless-stopped --name "mariadbha" -v /opt/domotics/mariadb:/var/lib/mysql -v /etc/localtime:/etc/localtime:ro -e MARIADB_ROOT_PASSWORD=password -p 3306:3306 -d mariadb
$ docker run --name nginx -d --net domonet --ip 172.18.0.102 -p 80:80 -p 443:443 --restart always -v /opt/domotics/nginx/proxy.conf:/etc/nginx/conf.d/default.conf -v /opt/domotics/nginx/www/:/var/www/ -v /opt/domotics/letsencrypt:/etc/letsencrypt nginx

Podemos comprobar que, efectivamente, se han asignado las IP:

$ docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mariadbha nginx
172.18.0.101
172.18.0.102

Futuros contenedores que sirvieran de apoyo a Home Assistant se añadirían siguiendo los pasos anteriores.

Deja un comentario