Gibt es eine Möglichkeit, docker-machine zu zwingen, das docker vm mit einer bestimmten IP zu erstellen (unter der Annahme, dass ip verfügbar ist)?Gibt es eine Möglichkeit, docker-machine zu zwingen, VM mit einer bestimmten IP zu erstellen?
Antwort
, die aktiv in docker/machine
issue 1709
angefordert wird, möchte ich die IP-Adresse einer VM angeben können (dh den Wert, der unter „URL“ in Docker-Maschine ls aufgeführt ist), wenn ich es schaffen, mit Docker-Maschine erstellen.
Ich möchte dies, weil ich auf Boot2docker die Standardadresse 192.168.59.103 angewiesen habe, aber jetzt variiert es von Maschine zu Maschine.
Die current workaround:
Mein VirtualBox hat dhcp Bereich 192.168.99.100 - 255 und ich möchte eine IP setzen, bevor 100.
ich einen einfachen Trick gefunden habe eine statische einstellen IP: nach einer Maschine erstellen, ich diesen Befehl und starten Sie die Maschine:
echo "ifconfig eth1 192.168.99.50 netmask 255.255.255.0 broadcast 192.168.99.255 up" | docker-machine ssh prova-discovery sudo tee /var/lib/boot2docker/bootsync.sh > /dev/null
Dieser Befehl erstellt eine Datei
bootsync.sh
, die vonboot2docker
Startskripten durchsucht und ausgeführt wird.Jetzt während des Bootens des Computers wird der Befehl ausgeführt und statische IP gesetzt.
docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
test-1 - virtualbox Running tcp://192.168.99.50:2376 test-1 (master)
Michele Tedeschi (micheletedeschi
)adds
Ich habe die Befehle aktualisiert mit:
echo "kill `more /var/run/udhcpc.eth1.pid`\nifconfig eth1 192.168.99.50 netmask 255.255.255.0 broadcast 192.168.99.255 up" | docker-machine ssh prova-discovery sudo tee /var/lib/boot2docker/bootsync.sh > /dev/null
dann Befehl ausführen (nur beim ersten Mal)
docker-machine regenerate-certs prova-discovery
jetzt die IP nicht vom DHCP-
(ersetzen prova-discovery
durch den Namen Ihrer Docker-Maschine) geändert wird
Hier ist das (Windows) Skript (dmvbf.bat
) ich verwende jetzt, auf das, was oben ist:
@echo off
setlocal enabledelayedexpansion
set machine=%1
if "%machine%" == "" (
echo dmvbf expects a machine name
exit /b 1
)
set ipx=%2
if "%ipx%" == "" (
echo dmvbf x missing ^(for 192.168.x.y^)
exit /b 2
)
set ipy=%3
if "%ipy%" == "" (
echo dmvbf y missing ^(for 192.168.x.y^)
exit /b 3
)
echo kill $(more /var/run/udhcpc.eth1.pid) | docker-machine ssh %machine% sudo tee /var/lib/boot2docker/bootsync.sh >NUL
echo ifconfig eth1 192.168.%ipx%.%ipy% netmask 255.255.255.0 broadcast 192.168.%ipx%.255 up | docker-machine ssh %machine% sudo tee -a /var/lib/boot2docker/bootsync.sh >NUL
echo route add default gw <gateway ip address here> | docker-machine ssh %machine% sudo tee /bar/lib/boot2docker/bootsync.sh >NUL
docker-machine ssh %machine% "sudo cat /var/run/udhcpc.eth1.pid | xargs sudo kill"
docker-machine ssh %machine% "sudo ifconfig eth1 192.168.%ipx%.%ipy% netmask 255.255.255.0 broadcast 192.168.%ipx%.255 up"
(Anmerkung: auf 10, Windows-Monty Wildcomments, dass es udhcpc.eth0.pid
ist, nicht udhcpc.eth1.pid
)
Ich starte das vm (docker-machine start <machine-name>
) und dann:
dmvbf <machine-name> 99 101
ich das nur einmal.
Bei der nächsten docker-machine start <machine-name>
lautet die IP 192.168.99.101.
Meine Workaround war zu beobachten, was VBoxNet der Docker-Maschine angeschlossen war und dann ging ich in VirtualBox, um den DHCP-Bereich zurückzusetzen, um nur die IP zu liefern, die ich der Maschine haben wollte.
- 1. ServiceStack - Gibt es eine Möglichkeit, alle serialisierten Daten zu einem bestimmten DateTimeKind zu zwingen?
- 2. Gibt es eine Möglichkeit, den Rückgabetyp Arrays.asList zu zwingen
- 3. Gibt es eine Möglichkeit, eine TCP-Verbindung zu einer IP mit Javascript zu machen?
- 4. Gibt es eine Möglichkeit, Nunit Setup mit Argumenten zu erstellen
- 5. Gibt es eine Möglichkeit, eine UIView zu zwingen, eine Unteransicht zu veröffentlichen?
- 6. Gibt es eine Möglichkeit, transparente Fenster mit Tkinter zu erstellen?
- 7. Gibt es eine Möglichkeit, eine Klasseneigenschaft in Python zu erstellen?
- 8. Gibt es eine Möglichkeit, eine inaktive Registerkarte zu zwingen, JavaScript mit normaler Geschwindigkeit auszuführen
- 9. Gibt es eine Möglichkeit, eine benutzerdefinierte Toastbenachrichtigung zu erstellen?
- 10. Gibt es eine schmerzfreie Möglichkeit, eine "css sandbox" zu erstellen?
- 11. Gibt es eine Möglichkeit, eine Gleitkommazahl ohne ldexp zu erstellen?
- 12. Gibt es eine Möglichkeit, eine leere .mo-Dateivorlage zu erstellen?
- 13. Gibt es eine Möglichkeit, Volley zu zwingen, ein Bild zu aktualisieren?
- 14. Gibt es eine Möglichkeit, Zend_Session_SaveHandler_DbTable zu zwingen, früher in die Datenbank zu schreiben?
- 15. Gibt es eine Möglichkeit, Webkonsolenfehler zu erkennen?
- 16. Gibt es eine Möglichkeit, ein Shell-Skript dazu zu zwingen, unter bash statt sh zu laufen?
- 17. Gibt es eine Möglichkeit, Checkstyle zu zwingen, bestimmte Warnungen im Quellcode zu ignorieren?
- 18. Gibt es eine Möglichkeit, ConfigurationManager.AppSettings zu überschreiben?
- 19. Gibt es eine Möglichkeit, ein Programm zu zwingen, nur 1 Thread zu verwenden?
- 20. Gibt es eine schnelle Möglichkeit, ein Set zu erstellen?
- 21. Gibt es eine Möglichkeit, Mehrfacheinspritzung zu propagieren?
- 22. (Batch) Gibt es eine Möglichkeit, anklickbare Schaltflächen zu erstellen?
- 23. Gibt es eine Möglichkeit, die Pixellänge einer Zeichenfolge zu berechnen?
- 24. Objektorientierte Programmierung: Gibt es eine andere Möglichkeit, Objekte zu erstellen?
- 25. Gibt es eine Möglichkeit, svcutil.exe zu zwingen, SSL-Zertifikatprobleme zu ignorieren?
- 26. Gibt es eine Möglichkeit, Varnish zu zwingen, den Cache-Control-Header auf 403 Antworten zu lesen?
- 27. Gibt es eine Möglichkeit, Facebook zu zwingen, das og: Bild auf geteilten Links zu zeigen?
- 28. Gibt es eine Möglichkeit, Firefox dazu zu zwingen, in einem neuen Prozess zu starten?
- 29. Gibt es eine Möglichkeit, einen Z-Index-Kreis zu erstellen?
- 30. Gibt es eine Möglichkeit, Diagramm für Localdb zu erstellen?
Schöne Workaround. Hoffe das wird jedoch gelöst. – ashic
Ich versuchte dies - ich hoffte wirklich, es würde funktionieren - mit dem Standard-Computer, Windows 10, mit dem Standard-Computer in VirtualBox VM. Es macht das vom Docker erzeugte Zertifikat ungültig. Wenn Sie docker-machine ls ausführen, wird angegeben, dass das Zertifikat für die alte IP gültig ist, nicht für die neue IP. – rmcsharry
@mcs das wird erwartet: yo machen eine letzte docker-maschine regenerieren-certs und du bist fertig. – VonC