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.