pricing hub docker docker-machine

hub - docker store



¿Hay una manera de forzar a la máquina acopladora a crear vm con una ip específica? (4)

Cambié el rango DHCP de VirtualBox. Realizó tanto el límite superior como el límite inferior a 192.168.99.100 y reinició la máquina de la ventana acoplable. Para cambiar el rango, vaya a VirtualBox-> Archivos-> administrador de red del host-> elija el adaptador apropiado-> cambie el límite superior.

¿Hay alguna forma de forzar a docker-machine a crear la ventana acoplable vm con una ip específica (suponiendo que ip está disponible)?


La siguiente secuencia de comandos usa default nombre default de la máquina y 10.100.1.100 como la dirección IP estática.

cat << EOF | docker-machine ssh default sudo tee /var/lib/boot2docker/bootsync.sh > /dev/null ifconfig eth1 10.100.1.100 netmask 255.255.255.0 broadcast 10.100.1.255 up ip route add default via 10.100.1.1 EOF

Reinicie la máquina:

docker-machine restart default

Regenera los certificados:

docker-machine regenerate-certs default -f

Por último, mostrar las variables de entorno:

docker-machine env default


Mi solución fue ver a qué VBoxNet estaba conectada la máquina acoplable y luego entré en VirtualBox para restablecer el rango DHCP para entregar solo la IP que quería que tuviera la máquina.


Eso se solicita activamente en la docker/machine número 1709.

Quiero poder especificar la dirección IP de una máquina virtual (es decir, el valor que se enumera en "URL" en docker-machine ls) cuando la creo con docker-machine create.

Quiero esto porque he estado confiando en la dirección predeterminada de boot2docker de 192.168.59.103, pero ahora varía de una máquina a otra.

La solución actual :

Mi virtualbox tiene un rango de dhcp 192.168.99.100 - 255 y quiero configurar una IP antes de 100.

He encontrado un truco sencillo para establecer una IP estática: después de crear una máquina, ejecuto este comando y reinicio la máquina:

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

Este comando crea un archivo bootsync.sh que se busca mediante los boot2docker inicio boot2docker y se ejecuta.

Ahora, durante el arranque de la máquina, el comando se ejecuta y establece la IP estática.

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

He actualizado los comandos con:

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

luego ejecuta el comando (solo la primera vez)

docker-machine regenerate-certs prova-discovery

ahora el IP no cambiará la IP

(Sustituya prova-discovery por el nombre de su docker-machine)

Aquí está el script (Windows) ( dmvbf.bat ) que ahora uso, basado en lo que está arriba:

@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"

(Nota: en Windows 10, Monty Wild comments que es udhcpc.eth0.pid , no udhcpc.eth1.pid )

Comienzo vm ( docker-machine start <machine-name> ) y luego:

dmvbf <machine-name> 99 101

Lo hago solo una vez.

En el siguiente docker-machine start <machine-name> , la IP será 192.168.99.101.