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?

14
demandé sur Mike Rylander 2015-09-17 23:52:12

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.

  1. 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

  2. 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
7
répondu Stanislav 2015-10-07 10:00:14

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.

4
répondu VonC 2016-02-12 16:16:28

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
2
répondu Josh Wilson 2016-08-09 22:51:39