Подтвердить что ты не робот

Как создать докер-машину с определенным 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

Update

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

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

4b9b3361

Ответ 1

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

  • Вы можете вызвать команду create docker machine для создания экземпляра Docker с флагом

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

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

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

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

Update: Существует открытый запрос функции для указания статического 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

Ответ 2

В ожидании разрешения issue 1709, я использую следующий script (один из Windows, который будет адаптирован для Mac).
(Источник: imranraja85 и micheletedeschi comment)

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"

Я запускаю vm (docker-machine start <machine-name>), а затем:

dmvbf <machine-name> 99 101

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

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

Ответ 3

Основываясь на обсуждении на docker/machine поток запросов функций, мы написали после 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