docker で後からポートを公開する
docker run したときに -p を忘れたり後から公開の必要ができた場合には
iptables -t nat -A DOCKER ! -i docker0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.17.0.15:80
でポート転送すればよい
ubuntu 14.04 ではこの設定でOKだった
DockerfileでEXPOSEしていないポートでも転送できた
IPアドレスは外からは docker inspect
で確認
うまくいかな場合は iptables-save
でほかのコンテナの転送設定見てやればいいと思う
2014/12/30 追記:
ubuntu 14.04のdockerのパッケージをdocker.ioからlxc-dockerに変更したら natテーブルだけじゃダメで FORWARDも必要だった
iptables -t nat -A DOCKER ! -i docker0 -p tcp -m tcp --dport 9292 -j DNAT --to-destination 172.17.0.49:80
iptables -A FORWARD -d 172.17.0.49/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 80 -j ACCEPT