Could you use a thin layer to proxy to each specific container (your host1 and host2)? For this, you could use Nginx, Hipache, or some other proxy to send traffic to your two different sites contained in different docker containers.
In this example, you'd have three containers. One that accepts and proxies traffic to the two other containers. I've made up some external ports just for the sake of the example below.
Nginx (or other) Reverse Proxy Container : Internal port 80, External port 80
- host1.com -> 49000
- host2.com -> 49001
Docker Apache Container 1: Internal port 80, External port 49000
<Virtualhost *:80>
ServerName host1.com
...
</Virtualhost>
Docker Apache Container 2: Internal port 80, External port 49001
<Virtualhost *:80>
ServerName host2.com
...
</Virtualhost>