Linuxを実行しているベアボーンサーバーがありますが、グラフィカルインターフェースはインストールされていません。これはコマンドラインでのみ機能し、私たちはそれを変更したくありません。
このサーバーのIPアドレスは192.168.1.6
この機械で私達は実行しますルーストアバウト複数のコンテナを使用してください。コンテナの1つは、ポート経由でアクセスできるWebアプリケーションです80
。
ベアボーンLinuxを使用すると、curl localhost
Webページの生データがあります。同じLAN上のすべてのコンピュータのネットワークアプリケーションを見たいです。たとえば、マイコンピュータで192.168.1.7
ブラウザに192.168.1.6
Webアプリケーションを入力して表示したいとします。
まずこれは可能ですか?それでは、案内を少ししていただけますか?
答え1
これを行うにはいくつかの方法があり、最も簡単な方法はDockerに組み込まれているネットワーキングを使用することです。
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
6ef2c6836690 bridge bridge local
db24b1e2be58 host host local
edf606d533a5 none null local
デフォルトでは、コンテナはbridge
NETにない限りネットワークに移動しますdocker run...
。
$ docker run -P -d -p 12345:80 nginxdemos/hello
これにより、LAN上のすべてのホストはIP +ポートを使用してDockerホストにアクセスできます。
$ curl -I http://192.168.56.101:12345/
HTTP/1.1 200 OK
Server: nginx/1.13.8
Date: Fri, 27 Jul 2018 08:26:02 GMT
Content-Type: text/html
Connection: keep-alive
Expires: Fri, 27 Jul 2018 08:26:01 GMT
Cache-Control: no-cache
ファイアウォール
Dockerホストのファイアウォールが原因で、トラフィックがDockerコンテナに入るのを妨げる可能性があることに注意してください。場合によっては、Dockerホストの外側のホストがこのポートにアクセスできるように、ホワイトリストにDockerホストのポート(上記の例では12345)を追加する必要があります。