2016-02-05 7 views
5

ポートマッピングを使用せずに、2つのコンテナを別々の特定のIPアドレス(192.168.0.222192.168.0.227)でVMホスト外で使用可能にしたいと考えています。つまり、IPを使用してコンテナ上の任意のポートに直接アクセスしたいということです。私はすでに192.168.0.1-192.168.0.221の範囲のVMホスト外のネットワークでマシンを稼動させています。コンテナに特定のIPを割り当て、それをVMホスト外でアクセス可能にする方法はありますか?

Docker 1.10.0でこれが可能になりましたか?

boot2docker/VirtualBoxドライバを使用して、docker version 1.10.0, build 590d5108docker-machine version 0.6.0, build e27fb87のOS X 10.11を使用しています。

答えて

3

Jessie Frazelleによれば、このshoul dが可能になります。
を参照してください「IPs for all the Things

これは、私はほとんどそれを我慢することはできませんので、クールです。

Docker 1.10では、素晴らしいlibnetworkチームがコンテナの特定のIPを指定する機能を追加しました。プルリクエストを表示したい場合は、ここにあります:docker/docker#19001。あなたは今docker network connectで見るnew docker run --ip optionを示しん

# create a new bridge network with your subnet and gateway for your ip block 
$ docker network create --subnet 203.0.113.0/24 --gateway 203.0.113.254 iptastic 

# run a nginx container with a specific ip in that block 
$ docker run --rm -it --net iptastic --ip 203.0.113.2 nginx 

# curl the ip from any other place (assuming this is a public ip block duh) 
$ curl 203.0.113.2 

# BOOM golden 

指定した場合に停止コンテナを再起動したときに、コンテナのIPアドレス(複数可)が再適用されます。 IPアドレスが使用できなくなった場合、コンテナは起動に失敗します。

IPアドレスが使用可能であることを保証する1つの方法は、ネットワークを作成するときに--ip-rangeを指定し、その範囲外の静的IPアドレスを選択することです。これにより、このコンテナがネットワーク上にないときにIPアドレスが他のコンテナに与えられないようにします。

$ docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 multi-host-network 

$ docker network connect --ip 172.20.128.2 multi-host-network container2 

部 "アクセスを作ること"、いつものように、port forwardingを伴うだろう。

関連する問題