Как создать докер-машину с определенным URL-адресом, используя докер-машину и VirtualBox?

Я могу создать экземпляр Docker с помощью драйвера VirtualBox, но не могу понять, как указать URL-адрес.

Создать команду:

docker-machine create --driver virtualbox myBox

докер-машина ls:

NAME      ACTIVE   DRIVER       STATE     URL                         SWARM
myBox     *        virtualbox   Running   tcp://192.168.99.100:2376   

Я хочу, чтобы URL-адрес был определенным URL-адресом. Как заставить экземпляр Docker использовать определенный URL-адрес (например, 192.168.99.113)?

Подробности: Mac 10.10.5 с использованием Docker Toolbox

Обновлять

Я попытался использовать команду --virtualbox-hostonly-cidr, чтобы установить диапазон IP-адресов для докер-машины; Я указал диапазон из одного IP-адреса ("192.168.99.113/32"), но созданная машина имела IP-адрес 192.168.99.100, который выходит за пределы указанного диапазона.

Можно ли вообще установить докер-машину с определенным IP-адресом?


person Mike Rylander    schedule 17.09.2015    source источник
comment
Я использую $(docker-machine ip myBox) для получения IP-адреса, поэтому не нужно заботиться об изменении IP-адреса.   -  person BMW    schedule 18.09.2015


Ответы (3)


У нас была такая же проблема некоторое время назад, когда мы пытались изменить IP-адрес докера по умолчанию в докер-машине, и мы нашли только 2 способа, как это сделать.

  1. Вы можете вызвать команду создания докер-машины, чтобы создать свой экземпляр Docker с флагом

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

    Этот флаг устанавливает диапазон адресов, который может быть установлен для экземпляра Docker. Нет гарантии, вы получите адрес, который хотите

  2. Вы можете изменить сетевые настройки виртуальной машины, оставив для нее NAT и переадресацию портов, чтобы ваш экземпляр Docker работал так, как он был установлен на хост-ОС.

Конечно, первый подход является стандартным и представляется предпочтительным. Но в некоторых случаях второй тоже может быть полезен.

Обновление. Существует открытый запрос функции для указания статического IP для докер-машины. Так что, к сожалению, сейчас это невозможно. Только свойство --virtualbox-hostonly-cidr, но вы должны указать префикс CIDR ниже 29, чтобы он работал (проверено для версии Win). Или взгляните на этот комментарий, где показано, как вы можете сделайте это для OS X, настроив Virtual Box, например:

$ 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
person Stanislav    schedule 18.09.2015

В ожидании разрешения проблемы 1709 я использую следующий скрипт (для Windows, адаптировано для Mac).
(Источник: imranraja85 и 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"

Я запускаю виртуальную машину (docker-machine start <machine-name>), а затем:

dmvbf <machine-name> 99 101

Я делаю это только один раз.

В следующие docker-machine start <machine-name> IP будет 192.168.99.101.

person VonC    schedule 12.02.2016

На основе обсуждения в docker/machine потоке запроса функций мы написали следующий скрипт:

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
person Josh Wilson    schedule 09.08.2016