[解決済み】Dockerコンテナにホストポートを転送する
2022-04-11 02:16:18
質問
Dockerコンテナから、ホストが開放しているポートにアクセスさせることは可能でしょうか?具体的には、ホスト上でMongoDBとRabbitMQが動作しており、Dockerコンテナ内でプロセスを実行してキューをリッスンし、(オプションで)データベースに書き込むようにしたいのです。
コンテナからホストにポートを転送して(-pオプションで)、Dockerコンテナ内から外部(つまりインターネット)に接続できることは知っていますが、ホストからのRabbitMQとMongoDBのポートを外部に公開しないようにしたいのです。
EDIT: いくつかの明確化。
Starting Nmap 5.21 ( http://nmap.org ) at 2013-07-22 22:39 CEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00027s latency).
PORT STATE SERVICE
6311/tcp open unknown
joelkuiper@vps20528 ~ % docker run -i -t base /bin/bash
root@f043b4b235a7:/# apt-get install nmap
root@f043b4b235a7:/# nmap 172.16.42.1 -p 6311 # IP found via docker inspect -> gateway
Starting Nmap 6.00 ( http://nmap.org ) at 2013-07-22 20:43 UTC
Nmap scan report for 172.16.42.1
Host is up (0.000060s latency).
PORT STATE SERVICE
6311/tcp filtered unknown
MAC Address: E2:69:9C:11:42:65 (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 13.31 seconds
コンテナ内でインターネットに接続するためには、このような仕掛けをしなければなりませんでした。 ファイアウォールが、Dockerコンテナから外部へのネットワーク接続をブロックしています。
EDIT : 最終的に、私は、以下の方法でカスタムブリッジを作成しました。 パイプワーク で、そのブリッジのIPでサービスをリッスンするようにしました。MongoDBとRabbitMQをDockerブリッジでリッスンさせるのではなく、この方法を採用したのは、その方がより柔軟性が高いからです。
解決方法は?
ドッカーホストはすべてのコンテナに対してアダプタを公開します。最近のubuntuを使用していると仮定すると、以下のように実行できます。
ip addr
これにより、ネットワーク・アダプタのリストが得られ、そのうちの1つは次のようなものになります。
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 22:23:6b:28:6b:e0 brd ff:ff:ff:ff:ff:ff
inet 172.17.42.1/16 scope global docker0
inet6 fe80::a402:65ff:fe86:bba6/64 scope link
valid_lft forever preferred_lft forever
rabbit/mongoにそのIP(172.17.42.1)にバインドするように指示する必要があります。その後、コンテナ内から172.17.42.1への接続を開くことができるようになるはずです。
関連
-
[解決済み] linuxでpsから特定のプロセスをgrepする方法は?
-
[解決済み] 負荷警告: エントリ シンボル _start が見つかりません
-
[解決済み] Dockerコンテナの中から、マシンのローカルホストに接続するにはどうすればよいですか?
-
[解決済み] Docker Dockerコンテナからホストへのファイルコピー
-
[解決済み] ホストからDockerコンテナにファイルをコピーする方法は?
-
[解決済み] リポジトリを使用せずに、あるホストから別のホストにDockerイメージをコピーする方法
-
[解決済み] ホストからDockerコンテナのIPアドレスを取得する方法
-
[解決済み] 古いDockerコンテナを削除する方法
-
[解決済み】Dockerは仮想マシンとどう違うの?
-
[解決済み】WindowsでTCPまたはUDPポートをリッスンしているプロセスを見つけるにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] pkg-configが見つからないエラー
-
[解決済み】gcc: エラー: 認識されないコマンドラインオプション
-
[解決済み】Apacheサーバーがクラッシュし続ける。"caught SIGTERM, shutting down"
-
[解決済み] glibc: elfファイルのOS ABIが無効です。
-
[解決済み] svn diffコマンドの使用
-
[解決済み] 圧縮データが無効です。
-
[解決済み] あるパターンの前にテキストを追加する際に、大文字小文字を無視してsedを使用する
-
[解決済み] SIGRTMAXとSIGRTMINの使い方は?
-
[解決済み] Vimを保存して終了するにはどうしたらいいですか?
-
[解決済み] grepコマンドで特定の列にマッチングさせる