こちらはプログラマーなりたてのへっぽこパンピーが、自分の自分による自分のための忘備録として書いてるので、間違いもがあるかもですがあしからず!
と定型文でいつもQitaを書き始めてるんですが、今日はちょっといつものtipsにすらならない戯言を書き連ねる前に、書きたいことがちょびっとあるんですよね。
何かしらのアウトプットになればと思い書き始めたら、駄文Qittaですが、意外にも数人の方々から真摯なコメントを頂けたりしたりと、目にとめてもらえてるみたいでした。
Qittaの片隅で愛を叫んでるけものにまで、優しくてしてくれるなんて..
みなさんありがとうございます!
Dockerのlocalhostに直接アクセスできんぞ
閑話休題(と書いてみたかっただけですが)
まぁ世の中の百戦錬磨のエンジニアの方々からしたら、Dockerにアクセスするときの話しなんか、当たり前のことだと思いますが、個人的になるほどーっとなったのと、もう上司から突っ込まれないように忘備録ならぬ防備録として、無防備に己の無知をさらしながら書き残そうと表題について思いました。
肝心の内容ですが、
そもそもDockerでRailsサーバを立ち上げると以下のようなメッセージが表示されるのです。
* Environment: development
* Listening on tcp://localhost:3000
Use Ctrl-C to stop
しかしlocalhost:3000にアクセスしても、なんも表示されん...
だがしかし以下に変えるとアクセスができる。
http://127.0.0.1:3000
これはどういうことかと言いますと、localhost:3000はDocker内で立ち上がってるサーバなため直接アクセスできないらしい(なぜはよくわかってません)
だからメインマシンからアクセスできる127.0.0.1:3000から、localhost:3000にアクセスしているらしい(逆だったかもしれませぬが)
メインマシンの中の、Dockerの中の、コンテナの中で稼働してるなんて...
もうこれは目に映るモノだけが真実ではないということですね。
イメージで理解しないといけないのが難しいですが、とりあえずノムラとガイアの関係みたいなもんだと考えてます。
(何言ってるかわからない方はグラップラー刃牙16巻を読んでもらえたらわかるかも)
と全体的にふあっとした理解しかできてないのですが、とりあえず「ポートフォワード」ってめちゃくちゃ点を決めてきそうなキーワードだけは覚えることができました。
Docker自体にも慣れていかんとですねという、よもやま話でした。
追記
「なんでアクセスできないっすか!!」 と職場で荒ぶれていましたら、
職場の上司に、補足情報を教えてもらったので、密かに追記です。
上司:「PCそれぞれには個別のIPアドレスと、ホスト名があり、Dockerにも同じようにあり、そしてDockerにも同じようにあるんだよ」
上司:「ネットワークでいろいろ設定していないと、DockerのIPアドレスに直接アクセスできないから、メインマシンのIPアドレスとDockerのIPアドレスを繋げて、メインマシンからアクセスする、それが ポートフォワード さ!!」
上司:「Dockerも人生も、今自分がどこにいるかを知るのが大事だね」
いろいろ自分の無知をさらけ出したがゆえに、とてもいいことが聞けました。
人生におていは、コードと恥じをかいたもん勝ちですね。