2017-12-07 7 views
0

私はコンテナにルーティング可能なIPを与えようとしています。ローカルネットワークは192.168.1.0/24で、192.168.1.17/29を使用してコンテナを提供したいと思います。ドッカーコンテナに独自のルーティング可能なIP(ホストとは異なる)を与える方法はありますか?

目的は、各コンテナに独自のIPを持たせることです。このように、2つのコンテナがポート80でWebサーバーを実行する場合、共有ホストのIP上の異なるポートにマッピングするのではなく、ポート80上の一意のIPを介してローカルネットワーク上の他のホストから直接アクセスできます。

独自のネットワークカードを備えた物理マシンには、ネットワーク上で192.168.1.xxxのIPがそれぞれ異なる場合と似ています。

が、私はこれを試してみました:

次が得
docker network create --subnet 192.168.1.0/24 --ip-range 192.168.1.17/29 --gateway 192.168.1.1 test_nw 

:この場合

$ docker network inspect test_nw 
[ 
    { 
     "Name": "test_nw", 
     "Id": "96bd574300059ef3710527a9bd0b3010d3b3c22d8de321ff459697eda96ab5e6", 
     "Created": "2017-12-06T21:50:08.591070587-05:00", 
     "Scope": "local", 
     "Driver": "bridge", 
     "EnableIPv6": false, 
     "IPAM": { 
      "Driver": "default", 
      "Options": {}, 
      "Config": [ 
       { 
        "Subnet": "192.168.1.0/24", 
        "IPRange": "192.168.1.17/29", 
        "Gateway": "192.168.1.1" 
       } 
      ] 
     }, 
     "Internal": false, 
     "Attachable": false, 
     "Ingress": false, 
     "ConfigFrom": { 
      "Network": "" 
     }, 
     "ConfigOnly": false, 
     "Containers": {}, 
     "Options": {}, 
     "Labels": {} 
    } 
] 

コンテナ内から、私は192.168.1.1にpingを実行することができますが、私は上で何かをpingできませんローカルネットワーク上の他のデバイスにpingすることはできません(192.168.1.2は存在しますが到達できません)

ホスト(私のラップトップ)は、インターネットまたは私のローカルネットワーク上で私はdocker network rmとこのネットワークを削除するまで。

私は明らかに何かが不足していますが、私は何を理解できません。私がやろうとしていることを達成する方法はありますか?

答えて

0

二つの容器は、ポート80でWebサーバを実行する場合、この方法で、私は、共有ホストのIP上の別のポートにマッピングするのではなく、ポート80上の独自のIPを介してローカルネットワーク上の他のホストから直接到達することができます。

私はこの問題を間違って考えていると思います。共有ホストのIP上の別のポートにマップする必要はありません。この問題を解決する最も一般的な方法は、複数のIPアドレスをホストに割り当てることです。私のホストが192.168.1.100ある場合たとえば、私はいくつかの追加のアドレスを追加する場合があります

ip addr add 192.168.1.200/24 dev eth0 
ip addr add 192.168.1.201/24 dev eth0 

今、私は1つのWebサーバを起動し、最初のIPアドレスにバインドすることができます

docker run -p 192.168.1.200:80:80 mywebserver1 

そして、私が開始することができますもう1つのWebサーバーを作成し、それを他のアドレスのポート80にマップします。

docker run -p 192.168.1.201:80:80 mywebserver2 

これはあなたの目標に合っているようです。

+0

興味深いことに、私はドッカーの仕事だと思っていました。 – springloaded

+0

これはポートマッピングでのみ機能しますが、どうすればこのようなことができますか:https://blog.jessfraz.com/post/ips-for-all-the-things/コンテナはパブリックIPを取得しません。ポートマッピングが必要ですか? – springloaded

関連する問題