A solução mais fácil aqui é adicionar endereços adicionais ao host e vincular um contêiner a cada endereço. Por exemplo, supondo que seu host seja 192.168.1.20, você pode adicionar endereços adicionais como este:
ip addr add 192.168.1.21/32 dev eth0
ip addr add 192.168.1.22/32 dev eth0
ip addr add 192.168.1.23/32 dev eth0
Depois, ao iniciar um contêiner, publique a porta 80 no contêiner para a porta 80 em um determinado endereço de host, assim:
docker run -p 192.168.1.21:80:80 mywebimage
(Isto não altera o endereço IP do container; ele cria um mapa entre o endereço IP e a porta e o endereço IP interno e a porta do container.)
Observe que a configuração de endereço mostrada aqui não será persistente; Se você reiniciar seu host, você perderá os endereços. Exatamente como você configura endereços como esse persistentemente varia de distribuição para distribuição; consulte sua documentação de distribuição para detalhes.