Basta configurar o host do docker para ter vários ips, um para cada nome de host que você gostaria de configurar. Em seguida, configure o dnsmasq para apontar cada ip para um hostname diferente, site1.home.com- > X.X.X.X, site2.home.com- > Y.Y.Y.Y. Todos esses ips pertencerão ao seu host de encaixe.
Em seguida, inicie seus contêineres no host do Docker. Eu uso o docker swarm com uma rede de sobreposição, frontended por um proxy reverso nginx. Eu configuro contêineres de estivadores para pertencer a essa rede de sobreposição e especifico --names para eles, para que a rede de sobreposição do docker tenha seu próprio dns para o proxy reverso nginx usar para apontar para outros contêineres.
Em seguida, configuro o nginx para apontar para os outros contêineres usando o dns baseado em swarm, dependendo do ip usado para se conectar ao host do docker. Portanto, o http: //X.X.X.X/ é traduzido por nginx para apontar para o nome do dns site1 na rede de sobreposição. O nginx irá buscar a página do contêiner do site1 e a devolverá ao usuário. É muito exagerado, mas tem enormes vantagens: ele faz isso de forma redundante, com pouco tempo de inatividade devido às atualizações contínuas.
Por exemplo: eu vou para home1.home.com no meu navegador. Isso dispara uma pesquisa de DNS mudando home1.home.com para X.X.X.X. Sou direcionado para o proxy reverso nginx do host do docker, que obtém a página do site1 hospedada na rede de sobreposição interna, com base no ip que usei para conectar-me ao host do docker. Em seguida, ele apresenta a página para mim.