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 losboot2docker
inicioboot2docker
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.