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