web-dev-qa-db-fra.com

Comment créer un ordinateur fixe avec une URL spécifique à l'aide de Docker-machine et de VirtualBox?

Je peux créer une instance Docker avec le pilote VirtualBox, mais je ne peux pas comprendre comment spécifier l'URL.

Créer une commande:

docker-machine create --driver virtualbox myBox

docker-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 puis-je forcer l'instance de Docker à utiliser une URL spécifique (ex: 192.168.99.113)?

Détails: Mac 10.10.5 à l'aide de Docker Toolbox

Mettre à jour

J'ai essayé d'utiliser la commande --virtualbox-hostonly-cidr pour définir la plage d'adresses IP de la machine de docker; J'ai spécifié une plage d'adresse IP unique ("192.168.99.113/32"), mais la machine créée avait une adresse IP de 192.168.99.100, ce qui est en dehors de la plage fournie.

Est-il même possible de définir un poste fixe avec une adresse IP spécifique?

14
Mike Rylander

Nous avons eu le même problème il y a un certain temps en essayant de modifier l’adresse IP du menu fixe par défaut dans une machine de menu fixe et nous n’avons trouvé que deux méthodes pour le faire.

  1. Vous pouvez appeler une commande de création docker pour créer votre instance Docker avec flag

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

    Cet indicateur définit une plage d'adresses pouvant être définies pour une instance de Docker. Aucune garantie, vous obtenez l'adresse que vous voulez

  2. Vous pouvez modifier les paramètres réseau de la machine virtuelle, en laissant NAT et la redirection de port correspondante, afin que votre instance Docker s'exécute comme si elle avait été installée sur le système d'exploitation hôte.

Bien sûr, le premier est une approche standard et semble être préférable. Mais dans certains cas, le second pourrait être utile aussi.

Update: Il existe une requête ouverte de fonctionnalités permettant de spécifier une adresse IP statique pour la machine fixe. Donc, malheureusement, ce n'est pas possible de le faire maintenant. Seule la propriété --virtualbox-hostonly-cidr, mais vous devez fournir un préfixe CIDR inférieur à 29 pour que cela fonctionne (testé pour la version Win). Ou regardez ce commentaire , où est affiché, comment vous pouvez le faire pour OS X en configurant Virtual Box, comme suit:

$ 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

Dans l’attente de la résolution de numéro 1709 , j’utilise le script suivant (un script Windows, à adapter pour mac).
(Source: imranraja85 et micheletedeschi 's commentaire )

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 lance le vm (docker-machine start <machine-name>), puis:

dmvbf <machine-name> 99 101

Je ne le fais qu'une fois.

Au prochain docker-machine start <machine-name>, l'adresse IP sera 192.168.99.101.

4
VonC

Sur la base de la discussion sur le docker/machine thread de demande de fonctionnalité nous avons écrit le script suivant :

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