it-swarm.com.ru

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

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

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

docker-machine create --driver virtualbox myBox

docker-machine 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-адресом?

14
Mike Rylander

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

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

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

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

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

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

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
7
Stanislav

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

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.

4
VonC

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

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