Comment créer une machine docker avec une URL spécifique en utilisant docker-machine et VirtualBox?
je peux créer une instance Docker avec le pilote VirtualBox, mais je ne sais pas comment spécifier L'URL.
Créer Une Commande:
docker-machine create --driver virtualbox myBox
menu fixe-machine ls:
NAME ACTIVE DRIVER STATE URL SWARM
myBox * virtualbox Running tcp://192.168.99.100:2376
je veux que L'URL soit une URL spécifique. Comment forcer l'instance Docker à utiliser une URL spécifique (ex: 192.168.99.113)?
Détails: Mac 10.10.5 utilisation de Docker Boîte à outils
mise à Jour
j'ai essayé d'utiliser le --virtualbox-hostonly-cidr
commande pour définir la plage IP de la machine docker; j'ai spécifié une plage D'une adresse IP ("192.168.99.113/32"), mais la machine créée avait une IP de 192.168.99.100, qui est en dehors de la plage que j'ai fournie.
est-il même possible de configurer une machine docker avec une adresse IP spécifique?
3 réponses
nous avons eu le même problème il y a quelque temps, en essayant de changer l'IP par défaut de docker dans docker machine et nous n'avons trouvé que 2 façons, comment le faire.
vous pouvez appeler une commande create de docker machine pour créer votre instance Docker avec flag
--virtualbox-hostonly-cidr "192.168.99.1/24"
ce drapeau définit une plage d'adresses, qui peut être définie pour une instance Docker. Pas de garantie, vous obtenez l'adresse que vous voulez
Vous pouvez modifier les paramètres réseau de machine virtuelle, laissant NAT et port forwarding pour cela, faisant fonctionner votre instance Docker comme si elle avait été installée sur OS hôte.
bien sûr, la première est l'approche standard et semble être préférable. Mais dans certains cas, la seconde pourrait être utile aussi.
mise à Jour:
Il y a un requête de fonctionnalité pour spécifier une adresse IP statique pour le panneau de la machine. Donc, malheureusement, il n'est pas possible de le faire dès maintenant. Seulement --virtualbox-hostonly-cidr
propriété, mais vous devez fournir un préfixe CIDR inférieur à 29 pour le faire fonctionner (testé pour la version Win). Ou de prendre un coup d'oeil à commentaire, où est montré, comment vous pouvez le faire pour OS X par la configuration de Virtual Box, de la forme:
$ 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
En attendant la résolution de numéro 1709, j'utilise le script suivant (un Windows one, à adapter pour mac).
(Source: imranraja85 et micheletedeschi)
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"
je démarre la vm (docker-machine start <machine-name>
), et ensuite:
dmvbf <machine-name> 99 101
Je ne le fais qu'une fois.
À la prochaine docker-machine start <machine-name>
, L'IP sera 192.168.99.101.
basé sur la discussion au docker/machine demande de fonctionnalité thread nous avons écrit le suivant le script:
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