質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.44%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

2回答

29232閲覧

WindowsのDockerのコンテナに外部からアクセスしたい。

suvera

総合スコア106

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

4クリップ

投稿2016/11/07 08:40

###前提・実現したいこと
Windowsで作成したコンテナに外部(別PCのブラウザなど)からアクセスしたいです。

現在WindowsとMacを利用して開発を行っています。
WindowsもMacも同じように実行してコンテナを作成しているのですが、
Macは外部からもアクセスできるが、Windowsではアクセスできない状態になってしまっています。
スクリプトや環境などコンテナの中はどちらも同じ状態になるようにコンテナを作成しています。

###発生している問題
Docker Kitematic で確認すると

Macで作成したコンテナのPortsには
DOCKER PORT -> 80
MAC IP:PORT -> localhost:ポート

Windowsで作成したコンテナのPortsには
DOCKER PORT -> 80
MAC IP:PORT -> 192.168.99.100:ポート

となっています。
cmdに「ipconfig」を入力し、192.168.99.100を確認すると
「VirtualBox Host-Only Network」とありました。

この部分の違いが問題となって接続できていないと考えていますが
解決方法がわかりません。
何をすればWindowsで作成したコンテナにも外部からアクセスできるようになるか教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

sshのポートフォワーディングを使用してネットワーク上にポートを公開することができます。

  • 動作確認等のために一時的に他からアクセスできるようにする程度を想定。
  • Docker Toolboxを利用している想定。

Docker Quickstart Terminalで以下のコマンドを実行します。

sh

1# パスワードは tcuser (デフォルト設定) 2$ ssh -fNCL 0.0.0.0:80:localhost:ポート docker@192.168.99.100
  • -f : SSHをバックグラウンドで実行する
  • -N : SSHトンネリングのみに使用する(ターミナルとして使用しないということか?よくわからんです)
  • -C : データを圧縮して送る
  • -L : Windows上のソケット 0.0.0.0:80 へのパケットを、dockerホストのソケット localhost:ポート に転送

【参考】

【おまけ】

SSHポートフォワーディングについて図にしてみました。

  • 基本はローカルからリモートへのSSH接続 ssh docker@192.168.99.100
  • SSH接続経路を利用してローカルポートへの接続をリモート側ネットワークのポートに転送する
  • ローカル側は接続元のソケット(IPアドレス:ポート)を指定し、リモート側は接続先からアクセスできるIPアドレスとポートを指定する
  • リモート側を「localhost:ポート」としたが、「コンテナIP:80」でも通信可能
    「localhost:ポート」(Windows⇒SSHサーバ⇒localhost⇒dockerポートフォワード⇒コンテナ)
    「コンテナIP:80」(Windows⇒SSHサーバ⇒コンテナ)

SSHポート転送

投稿2016/11/07 11:37

編集2016/11/08 11:45
tkmtmkt

総合スコア1800

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

suvera

2016/11/08 05:20

返信が遅れてしまい申し訳ありません。 解答ありがとうございます。 教えていただいたコマンドによって別PCから接続することができました。 ただ、コマンドの内容について正しく認識できているか心配なのでお答えいただけたら幸いです。 -L オプションで指定する部分(0.0.0.0:80:localhost:ポート)についてです。 https://www.kmc.gr.jp/advent-calendar/ssh/2013/12/09/tunnel2.html 上記のサイトではこの部分が以下のように書かれていました。 「(ローカルで使用するポート):(目的サーバのアドレス):(目的サーバで待ち受けてるポート番号)」 これに当てはめて考えると ・「0.0.0.0」→ 今回はWindowsの全てのIPアドレス ・80 → ローカル(Windows)で使用するポート ・localhost → 目的のサーバー(Dockerのコンテナ)のアドレス ・ポート → 目的のサーバーで待ち受けてるポート番号 と言った形になると思うのですが、 なぜlocalhost という指定になるのかがわかりませんでした。 docker@192.168.99.100と、コマンド後のパスワードからログインを行って コンテナ側から見てるのかと思いましたがそうなると コンテナ→ホスト に SSH を許可することになる気がして違和感を感じました。 また別のサイトを見たときに http://qiita.com/mechamogera/items/b1bb9130273deb9426f5 こちらのサイトのローカルフォワードでは3つのサーバーが描かれています。 ただ、今回で言うと localに当たると思われるWindows と、 targetに当たるDockerのコンテナ しかないように思えます。 で、remoteに当たる箇所で docker@192.168.99.100 を入力しているわけですが このつながりというか、流れ的なものが上手く理解できません。 もしよろしければご説明いただけないでしょうか?
tkmtmkt

2016/11/08 11:45

説明図を追加してみました。
suvera

2016/11/09 01:29

ありがとうございます!
suvera

2016/11/11 04:38

時間がたってからすみません。 こちらの方法で外部から見られるようにしたものを一覧で確認したり、 削除する方法を教えていただけないでしょうか。
guest

0

ブリッジ接続したいって事ですよね。多分。
参考URL

下記URLの説明見て、よくわからない、自分のやりたいこととは違うと思ったらVirtualBoxの設定を直接いじっちゃうのが楽です(ただ、環境構築がdockerだけで完結しなくなるのであまり良い手段ではありません)
http://kubotti.hatenablog.com/entry/2015/11/14/160920

投稿2016/11/07 09:15

ishi9

総合スコア1294

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.44%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問