書き手→Linux、Docker初心者です
結論→結果的にうまくいったけど、いろいろ未解決。
#構成はこんな感じ
・HostOS (Windows) ※ネットワークはProxyを通している
・GuestOS (VM/CentOS6.7)
・上記にDocker、CentoOS6.7、Ruby 2.1.7、RubyonRails4.2.5をインストール
##やりたいこと
RubyonRailsにテストアプリを乗せて、開発標準で付いているWEBrickを起動し、
Docker外(=GuestOS)からブラウザを立ち上げてアクセスできることを確認する。
##やってみたら接続できない
Docker上でIPを確認した後(172.17.0.1)、WEBrickを立ち上げる
※あらかじめ適当にアプリを作っておく
rails s
=> Booting WEBrick
=> Rails 4.2.5 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
GuestOSでFireFoxを立ち上げて
ttp://xxx.xx.0.1:3000
にアクセス。
するとブラウザは「正常に接続できません」と表示されたので、
サーバは立ってるし、Proxyが怪しい、と目をつけてみる。
実際、GuestOSとDocker間でpingは通るので、
試しにcurlを投げるとproxyが原因でアクセスが遮断された、と出た。
##というかなぜproxyを通ろうとしているのか
vethで通信をやりとりするのでproxyは通らないよね・・・?と思っていたのだが。。。
一応GuestOS側で確認したら、仮想ブリッジdocker0に紐づいたvethインターフェースが認識されている。
※brctl showで確認
Docker側でネットワークの向こうからinstall するために
wget、rbenvや/etc/sysconfig/dockerにproxyの設定をしているので
それが悪さしているのかと思い、とりあえず色々コメントアウト。
それでもproxyを通ろうとしているので埒があかず、
GuestOSで確認しようとしていたブラウザのproxyを通さないでやってみたらパケットは認識した。
##localhost
それでもつながらない。
WEBrickでポートを指定して起動して、Docker側でも-pをつけてrunしているのにつながらない。
とふと見たら、WEBrick側、起動時のログに「http://localhost:3000」って書いてる・・・。
試しにIPアドレスを0.0.0.0で指定
rails s -b 0.0.0.0
で起動したらうまくいった。
#結果
とりあえずやりたいことはできた。
しかし結局、GuestOSのどこかのproxyが原因でなかなか繋がらなかったが、どの設定なのかがわからなかった。