2016-02-05 11 views
5

Ich möchte zwei meiner Container außerhalb des VM-Hosts an ihren separaten spezifischen IP-Adressen (192.168.0.222, 192.168.0.227) ohne Port-Zuordnung verfügbar machen. Das heißt, ich möchte auf jeden Port direkt auf den Containern zugreifen, indem ich seine IP verwende. Ich habe bereits Maschinen im Netzwerk außerhalb des VM-Host im Bereich 192.168.0.1-192.168.0.221 ausgeführt.Wie lege ich eine bestimmte IP-Adresse dem Container zu und mache diese außerhalb des VM-Hosts zugänglich?

Ist dies jetzt mit Docker 1.10.0 möglich, und wenn ja, wie?

Ich bin auf OS X 10.11 mit docker version 1.10.0, build 590d5108 und docker-machine version 0.6.0, build e27fb87, mit boot2docker/VirtualBox-Treiber.


Ich habe versucht, dies ohne Glück für einige Zeit, um herauszufinden, und ich habe die folgenden Fragen und Antworten lesen:

Antwort

3

Nach Jessie Frazelle, diese shoul d jetzt möglich sein.
Siehe "IPs for all the Things"

Das so cool ist, kann ich es kaum aushalten.

In Docker 1.10 hat das geniale libnetwork-Team die Möglichkeit hinzugefügt, eine spezifische IP für einen Container anzugeben. Wenn Sie die Pull-Anforderung sehen möchten, ist es hier: docker/docker#19001.

# 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 

dass die new docker run --ip option tut illustrieren, dass Sie jetzt in docker network connect sehen.

Wenn angegeben, wird die IP-Adresse des Containers erneut angewendet, wenn ein gestoppter Container neu gestartet wird. Wenn die IP-Adresse nicht mehr verfügbar ist, kann der Container nicht gestartet werden.

Eine Möglichkeit, die Verfügbarkeit der IP-Adresse zu gewährleisten, besteht darin, beim Erstellen des Netzwerks eine --ip-range anzugeben und die statische IP-Adresse (n) außerhalb dieses Bereichs auszuwählen. Dadurch wird sichergestellt, dass die IP-Adresse keinem anderen Container zugewiesen wird, während sich dieser Container nicht im Netzwerk befindet.

$ 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 

Der "Zugänglichmachung" Teil würde bedeuten, wie üblich, port forwarding.