web-dev-qa-db-ja.com

docker-machineとVirtualBoxを使用して特定のURLでDockerマシンを作成するにはどうすればよいですか?

VirtualBoxドライバーを使用してDockerインスタンスを作成できますが、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)を使用させるにはどうすればよいですか?

詳細:DockerToolboxを使用したMac10.10.5

更新

--virtualbox-hostonly-cidrコマンドを使用して、DockerマシンのIP範囲を設定してみました。 1つのIPアドレス( "192.168.99.113/32")の範囲を指定しましたが、作成されたマシンのIPは192.168.99.100であり、指定した範囲外です。

特定のIPアドレスでDockerマシンを設定することも可能ですか?

14
Mike Rylander

しばらく前に同じ問題が発生し、DockerマシンのデフォルトのDocker IPを変更しようとしましたが、その方法は2つしか見つかりませんでした。

  1. Docker machineのcreateコマンドを呼び出して、フラグ付きのDockerインスタンスを作成できます。

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

    このフラグは、Dockerインスタンスに設定できるアドレスの範囲を設定します。保証はありません、あなたはあなたが望むアドレスを取得します

  2. 仮想マシンのネットワーク設定を変更して、NATとポート転送を残し、DockerインスタンスをホストOSにインストールされているように実行することができます。

もちろん、最初のアプローチは標準的なアプローチであり、好ましいようです。しかし、場合によっては、2番目も役立つ可能性があります。

更新:Dockerマシンの静的IPを指定するためのオープン 機能要求 があります。そのため、残念ながら、現時点ではそれを行うことはできません。 --virtualbox-hostonly-cidrプロパティのみですが、機能させるには29未満のCIDRプレフィックスを指定する必要があります(Winバージョンでテスト済み)。または、 このコメント を見てください。ここでは、次のようにVirtualBoxを構成してOSXでそれを行う方法を示しています。

$ 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

issue 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"

Vmを起動します(docker-machine start <machine-name>)、 その後:

dmvbf <machine-name> 99 101

私はそれを一度だけします。

次のdocker-machine start <machine-name>、IPは192.168.99.101になります。

4
VonC

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
2
Josh Wilson