it-swarm.com.de

Wie erstelle ich einen Docker-Computer mit einer bestimmten URL mithilfe von Docker-Computer und VirtualBox?

Ich kann eine Docker-Instanz mit dem VirtualBox-Treiber erstellen, aber ich kann nicht herausfinden, wie die URL angegeben wird.

Befehl erstellen:

docker-machine create --driver virtualbox myBox

Docker-Maschine ls:

NAME      ACTIVE   DRIVER       STATE     URL                         SWARM
myBox     *        virtualbox   Running   tcp://192.168.99.100:2376   

Ich möchte, dass die URL eine bestimmte URL ist. Wie kann ich die Docker-Instanz zwingen, eine bestimmte URL zu verwenden (z. B. 192.168.99.113)?

Details: Mac 10.10.5 mit Docker Toolbox

Aktualisieren

Ich habe versucht, mit dem Befehl --virtualbox-hostonly-cidr den IP-Bereich für den Docker-Computer festzulegen. Ich habe einen Bereich von einer IP-Adresse ("192.168.99.113/32") angegeben, aber der erstellte Computer hatte eine IP von 192.168.99.100, die außerhalb des von mir angegebenen Bereichs liegt.

Ist es überhaupt möglich, ein Docking-Gerät mit einer bestimmten IP-Adresse einzurichten?

14
Mike Rylander

Wir hatten vor einiger Zeit das gleiche Problem, als wir versuchten, die Standard-Docker-IP auf dem Docker-Computer zu ändern, und wir fanden nur zwei Möglichkeiten, wie es geht.

  1. Sie können einen Befehl create von docker machine aufrufen, um Ihre Docker-Instanz mit flag zu erstellen

    --virtualbox-hostonly-cidr "192.168.99.1/24"

    Dieses Flag legt einen Adressbereich fest, der für eine Docker-Instanz festgelegt werden kann. Keine Garantie, Sie erhalten die gewünschte Adresse

  2. Sie können die Netzwerkeinstellungen der virtuellen Maschine ändern, indem Sie NAT und die Portweiterleitung für die virtuelle Maschine belassen, sodass Ihre Docker-Instanz so ausgeführt wird, als wäre sie auf dem Host-Betriebssystem installiert.

Natürlich ist der erste Ansatz Standard und scheint vorzuziehen. In einigen Fällen kann jedoch auch die zweite nützlich sein.

Update: Es gibt eine offene Feature-Anfrage zur Angabe einer statischen IP für Docker-Computer. Leider ist dies derzeit nicht möglich. Nur --virtualbox-hostonly-cidr -Eigenschaft, aber Sie müssen ein CIDR-Präfix unter 29 angeben, damit es funktioniert (getestet für die Win-Version). Oder werfen Sie einen Blick auf diesen Kommentar , wo gezeigt wird, wie Sie dies für OS X tun können, indem Sie Virtual Box wie folgt konfigurieren:

$ VBoxManage dhcpserver modify --ifname vboxnet0 --disable
$ VBoxManage dhcpserver modify --ifname vboxnet0 --ip 192.168.59.3 --netmask 255.255.255.0 --lowerip 192.168.59.103 --upperip 192.168.59.203
$ VBoxManage dhcpserver modify --ifname vboxnet0 --enable
$ docker-machine create --driver "virtualbox" --virtualbox-cpu-count "-1" --virtualbox-disk-size "30000" --virtualbox-memory "2560" --virtualbox-hostonly-cidr "192.168.59.3/24" dev
7
Stanislav

In Erwartung der Auflösung von Ausgabe 1709 verwende ich das folgende Skript (ein Windows-Skript, das für Mac angepasst werden soll).
(Quelle: imranraja85 und micheletedeschi s Kommentar )

dmvbf.bat:

@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

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"

Ich starte das vm (docker-machine start <machine-name>) und dann:

dmvbf <machine-name> 99 101

Das mache ich nur einmal.

Beim nächsten docker-machine start <machine-name> lautet die IP 192.168.99.101.

4
VonC

Basierend auf der Diskussion im Docker/machine Feature Request Thread haben wir das folgende Skript geschrieben :

Usage: docker-machine-ipconfig <command> args...

Commands:
    ls                             List running docker-machines' ip addresses

    static <machine> [ip-address]  Configure <machine> to use a static IP address
                                   (default is current address)

    dhcp <machine>                 Configure <machine> to use DHCP client to gather IP address

    hosts                          Update /etc/hosts file
2
Josh Wilson