2016-05-23 2 views
2

Ich habe ein Problem mit Docker-komponieren. Momentan werden meine Stapel von Containern in einem eigenen benutzerdefinierten isolierten Netzwerk erstellt, das auf Bridge basiert. Zum Beispiel bei der Ausführung docker-compose -p client1 up -d erstellt es ein Netzwerk namens client1_default, die Subnetz 172.18.0.9/16 hat, die ein großes Subnetz ist (/16).So ändern Sie den Adressraum der Docker-Bridge (Subnetz)?

Ich brauche kein so großes Subnetz, /24 wäre genug.

Das Problem ist, dass mit diesem aktuellen Setup bin ich auf ca. ~ 25 Stapel von Containern begrenzt, weil dann docker (oder libnetwork) aus Adressräume zu verwenden. Ich wäre viel besser mit /24 Adressräume, denn dann wäre viel mehr verfügbar.

Die erste Frage ist: Wie kann ich Docker machen (und Docker-compose) verwenden /24 Subnetz standardmäßig ohne Bearbeitung einer der docker-compose.yml Datei. Ich weiß, dass dies möglich ist, aber es erfordert die Bearbeitung der .yml-Datei für jeden Client oder die Erstellung einer überschreibenden .yml. Dies ist suboptimal.

Wenn das nicht direkt möglich ist, habe ich den libnetwork Code durchforstet und this gefunden (es gibt einen "Broad" und "Granular" Adressraum, und standardmäßig verwendet er den "Broad"). Wie kann ich Docker den Granular Adressraum verwenden lassen?
Ich las here dass

Zum Beispiel wenn nicht anders in der Konfiguration angegeben, libnetwork für eine Brücke Netzwerk lokalen Adressraum Adresspool aus dem Standardfordern wird, während von dem globalen Standardadressraum für ein Overlay-Netzwerk.

Meine Frage ist dann: Wie ich es in der Konfiguration angeben? Was ist die Konfiguration? Was ist die Syntax, um dieses Verhalten zu ändern?

Vielen Dank im Voraus!

+0

Haben Sie jemals auf den Grund gegangen? Ich habe das gleiche Problem, bei dem ich mehr Kontrolle über den Pool von Subnetzen haben muss, den Docker-compose verwendet, da dies mein Corp-Netzwerk betrifft. – Schodemeiss

Antwort

0

Sie betrachten wünschen können mit flanneld von CoreOS https://github.com/coreos/flannel Dann können Sie es leicht auf Anfrage einfache HTTP konfigurieren, dass ETCD. Darüber hinaus erhalten Sie ein einziges virtualisiertes Netzwerk für alle Ihre Container (sogar auf verschiedenen Hosts). Dies kann nützlich sein, wenn Sie sich entscheiden, in der Zukunft zu erweitern.

+0

Danke @ andrey-chaussenko, ich werde das untersuchen. Aber ich bin mir nicht sicher, ob ich das verstehe: Was Sie mit "Sie werden ein einziges virtualisiertes Netzwerk für all Ihre Container bekommen". Fakt ist: Ich brauche **, um die benutzerdefinierten Netzwerke für jeden Client isoliert zu haben. Dies ist der Hauptgrund, warum ich docker-compose überhaupt verwende. Kann ich das noch haben? – nschoe

+0

@nachoe, ich bin mir nicht sicher, ob ich verstehe, was Sie mit "für jeden Kunden isoliert" meinen. Soweit ich weiß, führen Sie eine Gruppe von Containern zusammen und möchten, dass sie demselben virtuellen Netzwerk angehören. Hast du mehr als eine solche Gruppe? –

+0

@ andrey-chaussenko ah ok, wir sind nicht auf der gleichen Seite :-) Eigentlich ja: Ich führe Gruppen von (2) Container, die ich will in ihrem eigenen privaten Netzwerk. Stimmt. Das funktioniert derzeit hier. Problem ist: diese Gruppe von 2 Containern bekommt ein privates Netzwerk mit/16 Subnetz, für nur 2 Container! Und ja ich _definitely_ brauche mehr als eine Gruppe, eigentlich brauche ich etwa hundert. Und das ist, wo mein Problem auftritt: Ich kann nicht 100/16 Subnetzgruppen haben:/ – nschoe

Verwandte Themen