LoginSignup
5
5

More than 1 year has passed since last update.

Dockerの外部からアクセスするときにハマったこと(WEBrick)

Last updated at Posted at 2015-12-02

書き手→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を立ち上げる
※あらかじめ適当にアプリを作っておく

docker側
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で指定

WEBrick起動
rails s -b 0.0.0.0                                                                                                                                                             

で起動したらうまくいった。

結果

とりあえずやりたいことはできた。
しかし結局、GuestOSのどこかのproxyが原因でなかなか繋がらなかったが、どの設定なのかがわからなかった。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5