Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

書き手→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://172.17.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が原因でなかなか繋がらなかったが、どの設定なのかがわからなかった。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away