Machine: 【機胜リク゚スト】VirtualBoxVMの静的IPを指定する

䜜成日 2015幎08月16日  Â·  212コメント  Â·  ゜ヌス: docker/machine

こんにちは、私はこれを理解するためにドキュメントず問題を怜玢しおきたしたが、答えを芋぀けるこずができたせん。

基本的に、VMをdocker-machine create䜜成するずきに、VMのIPアドレス぀たり、 docker-machine ls 「URL」の䞋にリストされおいる倀を指定できるようにしたいです。

boot2dockerのデフォルトアドレスである192.168.59.103に䟝存しおいたので、これが必芁ですが、珟圚はマシンごずに異なりたす。

ありがずう

drivevirtualbox kinenhancement

最も参考になるコメント

みんな、さあ。 明らかに長期にわたる問題で+1を止めおもらえたすか その特定の理由で「いいね」ボタンが実装されたした。 加入者にスパムを送信する必芁はありたせん。

党おのコメント212件

+1、この機胜が必芁

+1

+1

+1

これが良い回避策です。 ~/.bash_profile以䞋を远加したす。

eval `docker-machine env <docker-machine name>`
export <some variable>=$(docker-machine ip <docker-machine name>)

@letsgolescoには、そのための--virtualbox-hostonly-cidrオプションを䜿甚できたす。これにより、適切なvboxnetXホスト専甚アダプタヌが遞択されたす。

デフォルトでは、docker-machineがランダムに1぀を遞択するように芋えるため、 vboxnet0  192.168.59.3/24 、boot2dockerで䜿甚されるものに䜿甚するように匷制するず、問題が解決するようです。

$ docker-machine create --driver virtualbox --virtualbox-hostonly-cidr "192.168.59.3/24" dev
Creating VirtualBox VM...
Creating SSH key...
Starting VirtualBox VM...
Starting VM...
To see how to connect Docker to this machine, run: docker-machine env dev

$ docker-machine ip dev
192.168.59.103

也杯。

@ luislavena-残念ながらそれはうたく

+1

ただし、Defにはこの機胜が必芁です。

@krinkereはあなたのvboxnet0 dhcpserver構成を埮調敎する必芁がありたした

$ 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

ご芧のずおり、これは巚倧なハックsmile_catですが、今のずころは機胜したすsmile

この機胜を芋たいです

@ luislavena-ご回答ありがずうございたす

これが私のMacで埗られるものです。

$ docker-machine create --driver virtualbox --virtualbox-hostonly-cidr "192.168.99.3/24" dev
VirtualBoxVMを䜜成しおいたす...
SSHキヌを䜜成しおいたす...
VirtualBoxVMを起動しおいたす...
VMを起動しおいたす...
Dockerをこのマシンに接続する方法を確認するには、次のコマンドを実行したす。docker-machineenv dev

$ docker-machine ip dev
192.168.99.100

私は正しいサブネットにIPを持っおいたすが、それは私が䜿甚したいIPではありたせん... Defはこの機胜を芋たいず思っおいたす

+1䟿利な機胜

+1この機胜は本圓に圹に立ちたす

docker-machineを䜿甚しおロヌカルElasticsearchクラスタヌを実行し、 elastic-local.mycompany.comマップされる192.168.59.103 /etc/hosts゚ントリがありたす。 boot2dockerからdocker-machineに移行したため、このhostsファむル゚ントリを、dockerVMに割り圓おられた新しいIPに手動で継続的に曎新する必芁がありたした。 このhostsファむル゚ントリを曎新する自動化を䜜成するこずもできたすが、docker-machineで新しいマシンに構成可胜なIPアドレスを䜿甚できるようにするず、はるかに簡単になりたす。

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1および

+1

+1

+1

䞀時的にいく぀かのbashスクリプトを䜿甚しおhostsファむルを曎新しおいたすが、sudo'dスクリプトを介しお/ etc / hostsを曎新する必芁があるため、扱いにくいですが、docker-machineからIPを取埗できるため機胜したす。 私は芁点を共有するかもしれたせん。

ianlintner-wf、スクリプトを共有しおください。 私はそれずたったく同じものを自分で曞き蟌もうずしおいたすが、車茪の再発明ができなければ、それは玠晎らしいこずです。

これが私が䜿甚しおいる䞻芁なスクリプトです。 私はそれを少しクリヌンアップしたしたが、より正匏なデフォルトのパラメヌタやその他のものが欠けおいたす。

https://gist.github.com/ianlintner-wf/a2b917158aaf100d9fb3

+1しおください

スクリプト@ ianlintner-wfに感謝したす。 実行䞭のDockerマシンのホスト/ IPを動的に远加するものを䜜成したした。 OS X ElCapitanでテスト枈み。

https://gist.github.com/cookandy/f14fadd31721dc6e136e

IP増分は、VirtualBoxDHCPサヌバヌによっおキャッシュされたす。 VirtualBoxを停止しお再起動するず、IP増分がリセットされたす。

+ 1、envは静的な/ etc / hosts゚ントリに䟝存しおいるため、OSX開発者はただboot2dockerを䜿甚しおいたす。 ずころで、スクリプト@ ianlintner-wfに感謝したす

+1

+1

+1

+1

+2

私のハッキヌハック゜リュヌションは、間違いなくすべおの人に適しおいるわけではありたせん。DockerマシンでCassandraを実行しおおり、開発䞭のnode.jsアプリからアクセスできるようにしたいず考えおいたす。 Dockerマシンに固定IPを䜿甚するのではなく、次のこずを行いたす。

docker-machine stop dockervm
VBoxManage modifyvm "dockervm" --natpf1 "tcp-port9160,tcp,,9160,,9160"
VBoxManage modifyvm "dockervm" --natpf1 "tcp-port9042,tcp,,9042,,9042"
docker-machine start dockervm
eval "$(docker-machine env dockervm)"

これにより、ロヌカルホストからDockerVMぞのポヌトトンネリングのポヌト転送が可胜になりたす。 これで、 localhost9042に接続でき

@luislavenaありがずうございたす。これらのオプションを䜿甚しおデフォルトのマシンを再䜜成しただけで、すべおが正垞に機胜したす。

+1

+ 1、hostsファむルの自動曎新を䜿甚しおスクリプトを詊しおみたすが、間違いなくこの機胜が必芁です。

@cookandyず@ ianlintner-wfスクリプトに基づいお、私は自分のものを䜜成したした。

docker-machine-nameずhostnameの間のマップを䜿甚しお構成できたす。

叀いDockerマシンのIPず新しいものを削陀しおホストを曎新したす

https://gist.github.com/juliengarcia/9a208ca5cf6590b25150

+1

+1

+1

+1

+1

+1

+1

+1

Dockerは、IPが倉曎された堎合に蚌明曞を再生成するように指瀺したす。この問題を回避するには、静的IPを蚭定する必芁がありたすか、それずも別の解決策がありたすか

eval "$(docker-machine env machine-1)"

Error running connection boilerplate: Error checking and/or regenerating the certs: There was an error validating certificates for host "192.168.99.101:2376": x509: certificate is valid for 192.168.99.108, not 192.168.99.101
You can attempt to regenerate them using 'docker-machine regenerate-certs name'.
Be advised that this will trigger a Docker daemon restart which will stop running containers.

この機胜のETAを+1したすか

䞀郚のナヌスケヌスの回避策は、次のようなマシンを䜜成するこずです。

192.168.98.100

docker-machine create -d virtualbox --virtualbox-hostonly-cidr "192.168.98.1/24" m98

192.168.97.100

docker-machine create -d virtualbox --virtualbox-hostonly-cidr "192.168.97.1/24" m97

192.168.96.100

docker-machine create -d virtualbox --virtualbox-hostonly-cidr "192.168.96.1/24" m96

同じcidr持぀マシンが他にない堎合、マシンは起動時に垞に.100 IPを取埗する必芁がありたす。

@ schmunk42非垞に良い

私のvirtualboxのdhcp範囲は192.168.99.100〜255で、100より前にIPを蚭定したいず思いたす。

静的IPを蚭定する簡単なトリックを芋぀けたした。マシンを䜜成した埌、このコマンドを実行しおマシンを再起動したす。

echo "ifconfig eth1 192.168.99.50 netmask 255.255.255.0 broadcast 192.168.99.255 up" | docker-machine ssh prova-discovery sudo tee /var/lib/boot2docker/bootsync.sh > /dev/null

このコマンドは、boot2docker起動スクリプトによっお怜玢されお実行されるファむルbootsync.shを䜜成したす。

これで、マシンの起動䞭にコマンドが実行され、静的IPが蚭定されたす。

docker-machine ls
NAME              ACTIVE   DRIVER       STATE     URL                                      SWARM
test-1                      -        virtualbox     Running   tcp://192.168.99.50:2376      test-1 (master)

それは良いトリックでもありたす@micheletedeschi +1

@micheletedeschiがこれを修正した方法が奜きです。 docker-machineの倉曎を䌎わない簡単で暙準的な方法のようです。 倚分これはどこかに文曞化されるべきですか

ここたたはここにいく぀かのドキュメントがありたす

+1
私は3぀のVMを䜿甚しおいたすが、ssh経由で接続し、utils、hostsファむルなどを構成する際に垞に問題が発生したす。

+1

+1

+1

+1

+1

+1

+1マシンの䜜成を自動化しようずしおいたすが、 /etc/hosts゚ントリを䜕床も远加する暩限を期埅できたせん。 安定したIPを持぀ずいうこずは、これを1回だけ蚭定する必芁があるこずを意味したす。

docker-machineipを䜿甚しおホスト䞊でdnsmasqを事前に入力するスクリプトを蚭定するこずになりたした。

2015幎12月19日に、1218 PMで、ペドロCattoriの[email protected]は曞きたした

+1

—
このメヌルに盎接返信するか、GitHubで衚瀺しおください。

非垞に䟿利な機胜+1

愛する@micheletedeschiの修正、私は仮想むンタヌフェむス䞊でIPを入れお巻かれおも眮き換えるeth1ずeth1:1䞊蚘のコマンドでeth1むンタヌフェむスはDHCPを実行しおいるし、最終的に戻りたすので、 DHCPによっお割り圓おられたIPアドレス。

dhcpリヌスの曎新時間がどれくらいかわからない最初の修正で1日実行した埌、突然「TLS蚌明曞を再生成する必芁がありたす」ずいう゚ラヌが発生し、䜕が起こっおいるのかがわかりたした。 仮想むンタヌフェむスにIPを配眮しおも問題が解決しない堎合は、報告したす

@dragsコマンドを次のように曎新したした

echo "kill `more /var/run/udhcpc.eth1.pid`\nifconfig eth1 192.168.99.50 netmask 255.255.255.0 broadcast 192.168.99.255 up" | docker-machine ssh prova-discovery sudo tee /var/lib/boot2docker/bootsync.sh > /dev/null

次にコマンドを実行したす初回のみ

docker-machine regenerate-certs prova-discovery

これで、IPはDHCPによっお倉曎されなくなりたす

+1

+1

+1

+1

+1

+1

誰かが@micheletedeschiの回避策をスクリプト化する運がありたしたか チヌムの党員が開発vmを起動するために実行できる単䞀のコマンドが必芁です。 私は次のこずを詊したした

docker-machine create -d virtualbox dev
echo "ifconfig eth1 192.168.99.50 netmask 255.255.255.0 broadcast 192.168.99.255 up" | docker-machine ssh dev sudo tee /var/lib/boot2docker/bootsync.sh > /dev/null
sleep 30
docker-machine restart dev
sleep 30
docker-machine regenerate-certs -f dev

コマンドを手動で実行するず、機胜したす。 スクリプトでは、スリヌプ30を蚭定する必芁がありたした。そうしないず、再起動コマンドがハングしたす。 これでスクリプトは正垞に終了したすが、実行埌もvmは叀いIPで実行されおいたす。

vagrantを䜿甚しおDockerマシンを起動しおから、vagrant-hostmanagerなどのプラグむンを䜿甚できたす。 ただし、もちろん、VMクロスプラットフォヌムを起動するための単䞀のコマンドにしたい堎合は、他の問題に察凊する必芁がありたす。

珟時点では、完璧な解決策はありたせん機胜。

ええ、私は今のずころVagrantに固執するず思いたす。

DOCKER_OPTS="-H 0.0.0.0:2375"実行されおいるdockerを䜿甚しおVagrantボックスむメヌゞを構築しおいたす。 次に、プラむベヌトネットワヌクにハヌドコヌドされたIPを䜿甚しおvagrant vmを䜜成し、そのIPを䜿甚しおDOCKER_HOSTず/ etc / hostsを蚭定できたす。これは、かなり理想的な蚭定になるず思いたす。

+1、特にマシンドラむバヌvmwarevsphereでの䜜業

+1

+1

+1

+1、マシンのIPアドレスを蚭定できるだけです。 珟圚、CLIはそれの取埗のみをサポヌトしおいたす。 AWS Elastic IPを䜿甚するには、これが必芁になりたす。 それ以倖の堎合は、マシンのconfig.jsonを手動で曎新する必芁がありたす。

~/.docker/machine/machines/my-machine-with-aws-elastic-ip/config.json

@dcossonwrtスクリプト。

docker-machineを起動しおから、次の2぀のコマンドを実行したす1぀はdhcpクラむアントを匷制終了し、2぀は静的IPを蚭定したす。 bootsync.shをトリガヌするために「dockerrestart」を実行しないこずを遞択したした。 おそらく、その起動スクリプトは機胜したせんか たた、dhcpクラむアントがナヌザヌを混乱させ、eth1IPをリセットしおいた可胜性もありたす。

echo "kill `more /var/run/udhcpc.eth1.pid`\nifconfig eth1 192.168.1.11 netmask 255.255.255.0 broadcast 192.168.99.255 up" | docker-machine ssh <machine-name> sudo tee /var/lib/boot2docker/bootsync.sh > /dev/null
docker-machine ssh <machine-name> "sudo ifconfig eth1 192.168.1.11 netmask 255.255.255.0 broadcast 192.168.1.255 up"

+1

+1

再起動したくなかったので、dhcpサヌバヌをすぐに匷制終了するために

echo "kill `more /var/run/udhcpc.eth1.pid`\nifconfig eth1 192.168.1.11 netmask 255.255.255.0 broadcast 192.168.99.255 up" | docker-machine ssh <machine-name> sudo tee /var/lib/boot2docker/bootsync.sh > /dev/null

docker-machine ssh <machine-name> "sudo cat /var/run/udhcpc.eth1.pid | xargs sudo kill"

docker-machine ssh <machine-name> "sudo ifconfig eth1 192.168.1.11 netmask 255.255.255.0 broadcast 192.168.1.255 up"

領事を実行しおいるマシンに静的IPを蚭定しないこずが、スりォヌムクラスタヌに関する問題を匕き起こしおいるず感じおいたす。 このための+1

+1

+1

+1

+1

+1

+ 1_000000 :)

+1

@micheletedeschiのコメントに基づいお、 Docker-machineVMに固定IPを蚭定するためのスクリプトを
http://stackoverflow.com/a/35367277/6309

+1

+1

+1

+1

私がやったこずは、hostsファむルのコピヌをどこにでも䜜成するこずです。

動的に倉曎するパヌツのプレヌスホルダヌを蚭定したす

<docker-machine-ip> doctify.local.com
<docker-machine-ip> doctify.local.co.uk
<docker-machine-ip> www.doctify.local.com
<docker-machine-ip> www.doctify.local.co.uk

参考私はデフォルトのsedずしおgnu-sedを䜿甚しおいるので、Macでは䜿甚されたせん。
brew install gnu-sed --with-default-names

開始スクリプトでは、それらを眮き換えおから、hostsファむルを切り替えたす。 これで、hostsファむルのコピヌが以前ず同じようになっおいる堎合。 他のサヌビスには圱響しないはずです

#!/bin/bash

echo
echo "########################################################"
echo "####              Update Docker Dev Hosts           ####"
echo "########################################################"
echo

machine_name="doctify-dev"

update_hosts() {
    echo
    # Copy over default hosts file
    echo "Copy Default Hosts..."
    cp -fv nginx/hosts docker/hosts

    echo
    # Replace with actual ip address
    echo "Replace hosts file..."
    echo "$machine_name IP ($machine_ip)"
    sed -i -e "s|<docker-machine-ip>|$machine_ip|g" docker/hosts

    echo
    # Move to /etc/hosts
    echo "Move hosts to correct location..."
    sudo mv -fv docker/hosts /etc/hosts

    echo
    # Remove copied hosts file
    echo "Clean up hosts file if it still remains..."
    rm -rfv docker/hosts
}

echo
# Get Current IP
echo "Retrieving Current IP Address..."
ip=($(cat /etc/hosts | grep doctify.local.com | sed -n '1p'))
echo "Current IP: $ip"

echo
# Get IP address of docker machine
echo "Get Current Machine IP address..."
machine_ip=$(docker-machine ip $machine_name)
echo "Machine IP: $machine_ip"

echo
if [ "$ip" = "$machine_ip" ]; then
    echo "IP Addresses are matching. Exiting..."
else
    echo "IP Addresses differ. Updating..."
    update_hosts
fi

スクリプトを開始したす。

#!/bin/bash

echo
echo "########################################################"
echo "####            Start Docker Dev Environment        ####"
echo "########################################################"
echo

$machine_name=doctify-dev

echo
echo "Start Machine..."
docker-machine start $machine_name

echo
echo "Attach Machine to Terminal..."
eval $(docker-machine env --shell bash $machine_name)

echo
echo "Update hosts IP..."
source docker/update-hosts

echo
echo "Set Machine IP as Hostname..."
export DOCKER_HOST_IP=$(docker-machine ip $machine_name)

echo
echo "Clean Docker Images..."
source docker/clean

echo
echo "Build Docker Images..."
docker-compose build

echo
echo "Start Docker Images..."
sh docker/bin/osx-dev -r "docker-compose up" -i ".rsyncignore"

+1

+1

+1

+1

+1

+1

+1

+1

䞀貫性のあるIPを䜿甚しおDockerマシン環境を䜜成するために䜿甚するものは次のずおりです。

#--- Usage: d-machine-static new_dm_name new_dm_ip [new_dm_memory]
function d-machine-static {
    new_dm_name="${1}"
    new_dm_ip="${2:-192.168.90.100}"
    new_dm_memory="${3:-1024}"
    docker-machine create -d virtualbox --virtualbox-hostonly-cidr "${new_dm_ip}/24" --virtualbox-memory "${new_dm_memory}" "${new_dm_name}"
    echo -e "\033[1;34m${new_dm_name}\033[0m = \033[0;32m$(/usr/local/bin/docker-machine ip ${new_dm_name})\033[0m"
}

䞀郚のIPは他のIPよりも頻繁に成功する傟向があり、私は192.168.x.100の圢匏のIP

そしお、これが私がそれらを玠早く切り替えるために䜿甚するものです

#--- Switch to a different docker-machine environment.
function d-env () {
    target_environment="${1}"
    if [[ $(/usr/local/bin/docker-machine status ${target_environment}) = "Stopped" ]]; then
        docker-machine start "${target_environment}"
        sleep 1
    fi
    eval "$(/usr/local/bin/docker-machine env ${target_environment})"
    echo -e "\033[1;34m${target_environment}\033[0m = \033[0;32m$(/usr/local/bin/docker-machine ip ${target_environment})\033[0m"
}

自由に䜿甚、倉曎、および心ゆくたで配垃しおください。

+1

たた、デフォルトゲヌトりェむを远加する必芁がありたした...

これは、PowerShellずHyper-VICSの代わりにNAT甚のVMNat.dllサヌビスを䜿甚を䜿甚しおWindows10でこれを行う方法です。

  • サブネットは192.168.233.0/24です
  • DHCPサヌバヌは.1で実行されおいたす
  • .2のDNSずNAT
  • .10静的IPを取埗する新しいdocker-machine

`` `` `` PowerShell
docker-machine create --driver hyperv --hyperv-virtual-switch "VMWare NAT" --hyperv-memory "512" consul0

再起動埌にデフォルトゲヌトりェむが機胜するかどうかはただテストしおいたせん。

echo "kill` `more /var/runudhcpc.eth0.id```nifconfig eth0 192.168.233.10 netmask 255.255.255.0 broadcast 192.168.233.255 up" | docker-machine ssh consul0 "sudo tee /var/lib/boot2docker/bootsync.sh"> $ null

eth0むンタヌフェむスでdhcpをすぐに匷制終了したす

docker-machine ssh consul0 "sudo cat /var/run/udhcpc.eth0.pid | xargs sudo kill"

新しい静的IPでeth0を起動したす。

次のコマンドがハングしたす...しばらくしおからCTRL + Cを実行する必芁がありたす...

docker-machine ssh consul0 "sudo ifconfig eth0 192.168.233.10 netmask 255.255.255.0 broadcast 192.168.233.255 up"

叀い動的IP甚のtls蚌明曞を修正したす

docker-machine regenerate-certs consul0

デフォルトゲヌトりェむを再床远加しお、むンタヌネットが匕き続き機胜するこずを確認したす私の堎合は欠萜しおいたした

docker-machine ssh consul0 "route add default gw 1​​92.168.233.2"
`` `` ``

知っおおくず良い

#get the ip
$(Get-VM consul0).NetworkAdapters[0].IPAddresses[0]

#open vmconnect
$vm=Get-VM consul0

vmconnect $env:COMPUTERNAME $vm.Name -G $vm.Id

泚boot2docker initが倱敗したように芋え、Hyper-VがアダプタヌIPを取埗できない堎合がありたす...

+1

+1

ただプラスワンモヌドですか :)

それはい぀も私の蚭定を台無しにし、特にロヌカルで異なるプロゞェクトのために耇数の開発環境を実行しおいるずきに固定IPを䞎えるこずは完党に理にかなっおいたす

䞊蚘の戊略がMacOSXでdocker-machineを䜿甚しおいる他のナヌザヌにも有効であるこずが確認されるのを埅っおいたす。 ここでは、より簡朔な圢匏になっおいたす。

1倉数xを1から98たでの任意の敎数に蚭定したす。䟋
x='42'

2倉数new_dm_nameを、新しい
new_dm_name='magic'

3次のコマンドを実行したす。
docker-machine create -d virtualbox --virtualbox-hostonly-cidr "192.168.$x.100/24" "$new_dm_name"

これで、新しい静的IPは192.168.x.100になり、そのIPを他に割り圓おない限り、セッション間で存続するはずです。 これが圓おはたるかどうかを確認するには、次のコマンドを実行するこずをお勧めしたす。

docker-machine ip "$new_dm_name"
docker-machine stop "$new_dm_name"
docker-machine start "$new_dm_name"
docker-machine ip "$new_dm_name"

運が良ければ、これはWindowsにも適応できたす。

+1

たあ、私は運呜にありたす。 私の䌚瀟は自分のロヌカルIPに192.168.99.xを䜿甚しおいるので、これを倉曎できるようにしおください。

@ xbeta -VBoxネットワヌクを再構成できたすか Hyper-Vを䜿甚しおいるため、その方法を説明するこずはできたせんが、デフォルトのVBoxドラむバヌを䜿甚しおいる堎合は、それによっお䜜成された仮想nicを芋おください。 docker-machineはVBoxをラップするだけです

+1

よろしくお願いしたす、+ 1コメントで止めおください。 Githubに+1機胜が远加されたした。 右䞊の[+ Smiley]をクリックし、芪指を立おるアむコンをクリックするだけです。 ここにコメントした人党員にメヌルを送るこずなく、あなたのサポヌトを䌝えたす。 #kthxbye

https://blog.docker.com/2016/03/docker-for-mac-windows-beta/

より高速で信頌性の高いVirtualBoxはもう必芁ありたせん

DockerがVirtualBoxを捚おおいるようです。 修正を取埗するたびに、この問題に察する期埅を調敎するこずをお勧めしたす。

+1

+1

+1

+1

+1

+1

+1

ええ、オタクになっおください、プラスを続けおください。 それはずおも自信を怍え付けたす。

@ everett-toews VirtualBoxは、Swarm、Kubernetes、NomadなどのマルチホストDocker゜リュヌションでも匕き続き圹立ちたす。DockerforMacは、1぀のホストセットアップに盞圓したすMacがホストです。
もう1぀のロヌカル゜リュヌションはVmwareFusionで、再起動時にホストのIPを保持したす。 これは最近の修正です。
そうです、VirtualBoxの静的IPを指定する簡単な方法が必芁です。

@gittycatうん。 そのため、私はただDockerToolboxを実行しおいたす。 ちょうど私が矀れを䜜成できるように。 それでも、私はむしろこの機胜芁求を芋たいず思い耇数のVM 。

+1

+1

+1

+1

+1

boot2dockerマシンの静的IPを蚭定する必芁がある堎合は、 / var / lib / boot2docker / profileを線集しお远加するだけです。

sudo cat /var/run/udhcpc.eth1.pid | xargs sudo kill 
sudo ifconfig eth1 <ip address to assign> netmask <subnet mask> broadcast <broadcast address> up

その埌、蚌明曞を再生成する必芁がありたす
docker-machine regenerate-certs rancher -f

+1

少なくずもMacn Windowsの堎合は、このリク゚ストを無関係ずしお閉じる時が来たず思いたす。 docker-machine ipに関する私の問題はすべお、docker forMacによっお解決されたした。 みんな思いたすか

@caledhwa同意したす、 docker -machineを凊理する理由がわかりたせん。

@caledhwa Docker for Macは1台のマシンのみをサポヌトしたす。耇数のマシンをセットアップしおいる堎合でも、これは適切です。

@davidolrikが蚀ったように、 陀倖する1぀のホストのみをサポヌトしたす。

👍

+1

ただ動きはありたせんか ゲストの競合するネットワヌクアドレスを倉曎できないため、これはdocker-machineを䜿甚するためのブロッカヌです。

バヌチャルボックスのDockerマシンIPを修正できるようにするために必芁な機胜です。

矀れの䟋ずしおいく぀かのDockerホストをセットアップしたしたが、再起動埌、ほがすべおのホストのIPが倉曎され、゚ラヌが発生したす。

x509: certificate is valid for 192.168.99.103, not 192.168.99.100

はい、 docker-machine regenerate-certsを䜿甚しお蚌明曞の問題を修正できる可胜性がありたすが、Key-ValueストアのIPも倉曎されたため、構成で手動で倉曎するたで、矀れが機胜しなくなりたした。もう䞀床。

たぶん、それらを削陀しお、それらのホストを再床䜜成する方がよいでしょう。 ただし、これらのホスト内のすべおのむメヌゞ/コンテナヌは倱われたす。

そのため、ホストのIPを指定できるようにするか、virtualbox dockerホストに固定IPを自動的に割り圓お、再起動時に倉曎させないようにしおください。

+1
DHCPずDNSにdnsmaqを䜿甚する堎合がありたす。䞊蚘のコメントに基づいお、仮想ボックスむンタヌフェむスのDHCPサヌバヌを無効にしおみたした。私の堎合はvboxnet4ようにVBoxManage dhcpserver remove --netname HostInterfaceNetworking-vboxnet4ように再起動する必芁がありたすマシンがdnsmasqからDHCP範囲を遞択する堎合、盎面しおいる問題は、新しいマシンを䜜成するたびに、docker-machineがvboxnet4 dhcpサヌバヌを有効にし、dnsmasqを䜿甚する他のサヌバヌがそれを実行できないこずです。 docker-machinesを怜玢したす。vnetの削陀を繰り返しおから、docker-machinesを再起動する必芁がありたす。 docker-machine-createにフラグを远加しお、dhcpのようなものを有効にしないようにできるず䟿利です。

+1

+1

+1

+1

これは、 @ micheletedeschiの䜜業をカプセル化し、DHCP構成ず静的構成を切り替えるための䟿利なコマンドです。 たた、芁求された堎合は、 /etc/hostsファむルも曎新されたす。

https://github.com/fivestars/docker-machine-ipconfig

私たちはここ数週間それを䜿甚しおおり、倧きな成功を収めおいたす。 Dockerマシンを䜜成した盎埌に実行しおください。

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

このオプションはVsphere、Azure、およびその他のデプロむ環境でも興味深いため、誰もがより「䞀般的な」゜リュヌションDockerマシンのネむティブ機胜を考えおいたした。 しかし、それは本圓に倧歓迎です。

+1

+1

+1

+1

+1

+1

@micheletedeschiの回避策は

+ 1、ZooKeeperずVirtualBoxを䜿甚しお今日同じ問題が発生したした

@micheletedeschiの回避策は

DHCPクラむアントを匷制終了しおいたすか 元に戻した埌、DHCPクラむアントがただ実行されおいないこずを確認できたすか

最終的に機胜する別の回避策を芋぀けたした。_advertise= $ifconfig eth1 | grep -Eo "192.168.99.1 [0-9] {2}"2376_を䜿甚しお各マシンでスりォヌム゚ヌゞェントを起動し、珟圚のZooKeeperたたはその他の怜出サヌビスぞのIP。 私の堎合、これは問題ありたせん。各マシンに192.168.99.1 **アドレスが割り圓おられるこずに䟝存できるからですこれは単なる実隓的な蚭定です。 任意のIP範囲に適甚できるより高床な正芏衚珟があるず思いたす。 これは良くなく、ちょっずハッキヌかもしれたせんが、それは仕事をしたす。

+1

+1

再起動時に突然無効になるVMIPずTLS蚌明曞を任意に倉曎するず、倚くの問題が発生し、工数が無駄になりたす。

これも優先されたすか このケヌスは党䜓で13か月間開かれおいたす。 +10000

私の掚枬では、この問題に関しお、Dockerマシンチヌムの䞀郚の人々ず䞖界の他の人々ずの間に哲孊的な意芋の盞違があるず思いたす。 DHCPを䜿甚し、非決定論的なIPを䜿甚するこずは、私のすべおのナヌスケヌスにずっおほずんど䟡倀がありたせん。

私は昚幎、この回避策を䜿甚しおいたす。 これは、䞊蚘のワンラむナヌの回避策のいく぀かから適応されおいたす。

DockerマシンにSSHで接続したす
docker-machinesshのデフォルト

boot2docker起動スクリプトを远加/線集したす
sudo vi /var/lib/boot2docker/bootsync.sh

#!/bin/sh
/etc/init.d/services/dhcp stop
ifconfig eth1 192.168.99.50 netmask 255.255.255.0 broadcast 192.168.99.255 up

sudo chmod 755 /var/lib/boot2docker/bootsync.sh
出口

マシンを再起動し、蚌明曞を再生成したす
docker-machinerestartデフォルト
docker-machineregenerate-certsのデフォルト

+1

+1

+1docker-machineおよびjimmidyson / minishiftの堎合

+1

@eytanhanig残念ながら、あなたの方法は私にはうたく

+1

+1

人々がこれを+1しおいるのはばかげおいたす。

+1

私はこの機胜を持っおいるのが倧奜きですが、それを実装するための゚レガントなアプロヌチは芋぀かりたせんでした。

この問題はVirtualboxのDHCPが原因で発生したす。システムを再起動するず、DHCPサヌバヌは割り圓おられたすべおのIPデヌタを倱い、最埌に同じIPを持぀可胜性が䜎いVMにIPを再割り圓おしようずしたす。

VirtualboxにDHCPデヌタを氞続化させるこずが正しいかどうかはわかりたせん。 たた、Boot2dockerはDHCPによっお割り圓おられたIPを氞続化したせん。これは、実際には正しい動䜜です。

私芋ですが、DHCPを回避するのは正しい方法ではないず思いたす。静的IPをBoot2dockerずdocker-machinevirtualboxドラむバヌに指定する機胜を远加するこずで問題を解決できるず思いたす。

DHCPを䜿甚するよりも、静的IPを指定する機胜を远加するなど、最初にhttps://github.com/boot2docker/boot2dockerプロゞェクトに静的IPを実装する方がよい堎合がありたす。

DHCP呌び出しをトリガヌするコヌドは次のずおりです。

https://github.com/boot2docker/boot2docker/blob/master/rootfs/rootfs/bootscript.sh#L16

# Trigger the DHCP request sooner (the x64 bit userspace appears to be a second slower)
echo "$(date) dhcp -------------------------------"
/etc/rc.d/dhcp.sh
echo "$(date) dhcp -------------------------------"

/var/lib/boot2docker/profileに䞀連のIP構成を远加するこずで、条件付きにするこずができたす。静的IPが構成されおいる堎合は、DHCPからの芁求IPの代わりに静的IPを䜿甚したす。

次に、 virtualboxドラむバヌに1぀以䞊のオプションを远加しお、静的IP構成を指定できたす --virtualbox-boot2docker-cidr 、 --virtualbox-boot2docker-gateway 、 --virtualbox-boot2docker-dns ...。

+1

+1

+1

みんな、さあ。 明らかに長期にわたる問題で+1を止めおもらえたすか その特定の理由で「いいね」ボタンが実装されたした。 加入者にスパムを送信する必芁はありたせん。

加入者にスパムを送信する必芁はありたせん。

退䌚できたす。
1

私はすべお加入者にスパムを送りたす。

それらのサブスクラむバヌの䞀郚は、プロゞェクトチヌムの䞀郚です。

2017幎1月26日14:20、「SergeyNevmerzhitsky」 [email protected]
曞きたした

加入者にスパムを送信する必芁はありたせん。

退䌚できたす。
[画像1]
https://cloud.githubusercontent.com/assets/1006042/22332699/4cf1a8b4-e3e3-11e6-8bad-52406c3b8055.png

—
コメントしたのでこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/docker/machine/issues/1709#issuecomment-275386350 、
たたはスレッドをミュヌトしたす
https://github.com/notifications/unsubscribe-auth/AG44NZ2KdnsH6JTU6iI_5Uieh9WZxWXBks5rWJ2RgaJpZM4FsQYg
。

私はすべお加入者にスパムを送りたす。
それらのサブスクラむバヌの䞀郚は、プロゞェクトチヌムの䞀郚です。

メンテナがチェックむンしたす。+ 1のコメントで問題をスパムしないでください。 これはよく知られた問題であり、スレッドにスパムを送信しおも効果はありたせん。 必芁に応じお、「+ 1」の絵文字反応でサポヌトを瀺しおください。 い぀ものように、プルリク゚ストや詳现な提案を喜んで評䟡したす。 皆さんありがずう。

補足ずしお、 @ twang2218は䞀般的に正しい考えを持っおいるようです-静的IPは、このスレッドのサブスクラむバヌが念頭に眮いおいる可胜性のあるナヌスケヌスに

静的IPは本圓に必芁ありたせん。 ただし、䜜成䞭にIPアドレスが遞択されるず、それ以降の再起動時にIPアドレスを保持する必芁がありたす。 これはすでに利甚可胜ですか

VPNを備えたDockerがあり、暙準の192.168.99.100が読み蟌たれたせんでした。 これはVPN接続が原因であるず考えたため、Virtualbox内にブリッゞネットワヌクをセットアップしお、192.168.1.159経由でDockerにアクセスしたした。 これをKitematicの公開IPアドレスに衚瀺したいず思いたす。 そうする方法はありたすか

この機胜の実装を埅぀こずができない堎合は、 VagrantVirtualBoxプロバむダヌずdocker-machine汎甚ドラむバヌを䜿甚しおカスタムIPずカスタムCPU /メモリを割り圓おるこずができたす。

たずえば、Windowsでは、次のVagrantfileを配眮したす。

Vagrant.configure("2") do |config|
  config.vm.box = "AlbanMontaigu/boot2docker"
  config.vm.provider "virtualbox" do |v|
    v.memory = 8192
    v.cpus = 8
  end
  config.vm.synced_folder ".", "/vagrant", disabled: true
  config.vm.synced_folder "C:/Users", "/c/Users"
  config.vm.network "private_network", ip: "192.168.99.103"
end

vagrant.pemずいう名前のvagrant defaultssh秘密鍵を配眮し

実行したす

vagrant up
docker-machine create --driver generic --generic-ip-address=192.168.99.103 --generic-ssh-user=docker --generic-ssh-key=vagrant.pem default
docker-machine ls

たた、カスタムIP、CPU、メモリなどがvagrant経由で構成されたDockerホストを取埗し、同時にdocker-machine経由でアクセスできたす。

Windows甚の䜜業ファむルセットはhttps://github.com/joelhandwell/dockerhostにありたす。

@jcwilsonこんにちは、Josh et al、どうもありがずう。同じ問題を修正するためにスクリプトをフォヌクしたしたhttps://github.com/minishift/minishift/issues/343、https://github.com/minishiftを参照 / minishift / issues / 598ミニシフトずの組み合わせ

https://github.com/ahilbig/docker-machine-ipconfig

連絡あった

珟圚、Minishiftでこれを実隓しおいたす https 
ただし、別のアプロヌチは、cloud-initのようなものを䜿甚するこずですこれは、このアプロヌチには倚分重いか、Goベヌスのバむナリ内にDHCPサヌバヌを埋め蟌み、これを䜿甚しお割り圓おられたIPアドレスを匷制したす

+1。
珟圚、耇数のマシンを持っおいるこずは恐ろしい苊痛です。 远加の蚌明曞たずえば、カスタムDockerリポゞトリ甚を䜿甚し、起動マシンの順序を倉曎する堎合は、次のこずを行う必芁がありたす。

Error checking TLS connection: Error checking and/or regenerating the certs: There was an error validating certificates for host "192.168.99.100:2376"
: x509: certificate is valid for 192.168.99.101, not 192.168.99.100

これにより、蚌明曞を再生成するか、すべおのマシンを無効にしお、実行順序を埩元する必芁がありたすこれも時には苊痛になる可胜性がありたす。

さらに、Chefを䜿甚しおDockerベヌスのプロゞェクトを構成するこずも、䜜成されたマシンが垞に同じIPを持っおいるず想定できる堎合たずえば、hostsファむルに远加しおIPを忘れるこずができる堎合ははるかに優れおいたす。

+1

+1

+1
thx jcwilson、スクリプトdocker-machine-ipconfigはずおも良いです スクリプトでeth1をeth0に倉曎する必芁がありたした。その埌、スクリプトは私にずっお完璧に機胜したした。 私はvmwarevsphereを䜿甚しおいたす。

さよなら。

+1

ミニシフトの䞀郚ずしお、 https//github.com/minishift/minishift/issues/1316を実装したしたが、これはこれたでのずころうたく機胜しおいたす。 珟圚、他のハむパヌバむザヌに察しお同じこずを行うための代替案を怜蚎しおいたすが、最初にhttps://github.com/minishift/minishift/issues/1457を䜿甚しおアドレスを修正し

+1

私が芋぀けた最も簡単な回避策は、ドヌカヌマシンによる仮想マシンの起動シヌケンスに䟝存するこずです。

VirtualBoxには、192.168.99.100からIPアドレスの割り圓おを開始するDHCPサヌバヌがありたす。

  1. すべおのVMを停止したす
    docker-machine stop ${docker-machine ls -q}
    この手順により、割り圓おられたすべおのアドレスがVirtualBoxDHCPに解攟されたす

  2. VMを順番に起動したす
    docker-machine start vbox1 && docker-machine start vbox2 && docker-machine start vbox3
    この手順では、次のようにIPを割り圓おたす。
    192.168.99.100vbox1
    192.168.99.101vbox2
    192.168.99.102vbox3

docker-machine start vbox1 vbox2 vbox3は機胜しないこずに泚意しおください。ただし、その理由はわかりたせん。

+1

docker-machine.exe start実行するず、DHCP waiting for an IP 15秒以䞊かかりたすむンタヌネットが壊れおいる堎合は2分以䞊かかりたす、静的IPを蚭定できれば、高速に起動できるず思いたす。

この機胜は少し前にMinishiftに远加されたしたが、
機胜するにはISOを倉曎する必芁がありたす。
Hyper-Vで、boot2dockerむメヌゞにはない問題が発生したした
うたく再生されたした...したがっお、CentOSおよびFedoraベヌスのむメヌゞでのみ機胜したした。
たた、DHCPに䟝存しおいるため、これは珟圚のKVMドラむバヌでは機胜したせん。

これには少し再蚭蚈が必芁です...

23:08の日、2019幎2月3日はfcyingに[email protected]を曞きたした
>>

docker-machine.exe startを実行するず、DHCPがIPを埅機するのに15秒以䞊かかりたすむンタヌネットが切断されおいる堎合は2分以䞊かかりたす。静的IPを蚭定できれば、高速に起動できるず思いたす。

—
コメントしたのでこれを受け取っおいたす。
このメヌルに盎接返信するか、GitHubで衚瀺するか、スレッドをミュヌトしおください。

-

Gerard Braad | http://gbraad.nl
[オヌプン゜ヌスの問題を行う]

私が芋぀けた最も簡単な回避策は、ドヌカヌマシンによる仮想マシンの起動シヌケンスに䟝存するこずです。

VirtualBoxには、192.168.99.100からIPアドレスの割り圓おを開始するDHCPサヌバヌがありたす。

  1. すべおのVMを停止したす
    docker-machine stop ${docker-machine ls -q}
    この手順により、割り圓おられたすべおのアドレスがVirtualBoxDHCPに解攟されたす
  2. VMを順番に起動したす
    docker-machine start vbox1 && docker-machine start vbox2 && docker-machine start vbox3
    この手順では、次のようにIPを割り圓おたす。
    192.168.99.100vbox1
    192.168.99.101vbox2
    192.168.99.102vbox3

docker-machine start vbox1 vbox2 vbox3は機胜しないこずに泚意しおください。ただし、その理由はわかりたせん。

時々、vboxに192.168.99.100から始たるIPを割り圓おるために、WindowsでVBoxNetDHCP.exeプロセスを匷制終了する必芁がありたした。
そうしないず、vboxは以前のマシンで䜿甚されおいたIPを解攟したせん理由はわかりたせん

👍

それは本圓に私の人生を楜にするでしょう。

私が芋぀けた最も簡単な回避策は、ドヌカヌマシンによる仮想マシンの起動シヌケンスに䟝存するこずです。

VirtualBoxには、192.168.99.100からIPアドレスの割り圓おを開始するDHCPサヌバヌがありたす。

  1. すべおのVMを停止したす
    docker-machine stop ${docker-machine ls -q}
    この手順により、割り圓おられたすべおのアドレスがVirtualBoxDHCPに解攟されたす
  2. VMを順番に起動したす
    docker-machine start vbox1 && docker-machine start vbox2 && docker-machine start vbox3
    この手順では、次のようにIPを割り圓おたす。
    192.168.99.100vbox1
    192.168.99.101vbox2
    192.168.99.102vbox3

docker-machine start vbox1 vbox2 vbox3は機胜しないこずに泚意しおください。ただし、その理由はわかりたせん。

ずおも䟿利です。

static ip address 192.168.99.50をVirtualBoxのdocker-machineデフォルトに割り圓おるために、次を䜿甚したした。

$ echo -e "kill \`cat /var/run/udhcpc.eth1.pid\`\nifconfig eth1 192.168.99.50 netmask 255.255.255.0 broadcast 192.168.99.255 up" | docker-machine ssh default sudo tee /var/lib/boot2docker/bootsync.sh > /dev/null

$ docker-machine restart default
Restarting "default"...
(default) Check network to re-create if needed...
(default) Waiting for an IP...
Waiting for SSH to be available...
Detecting the provisioner...
Restarted machines may have new IP addresses. You may need to re-run the `docker-machine env` command.

$ docker-machine env
Error checking TLS connection: Error checking and/or regenerating the certs: There was an error validating certificates for host "192.168.99.50:2376": x509: certificate is valid for 192.168.99.103, not 192.168.99.50
You can attempt to regenerate them using 'docker-machine regenerate-certs [name]'.
Be advised that this will trigger a Docker daemon restart which might stop running containers.

$ docker-machine regenerate-certs default
Regenerate TLS machine certs?  Warning: this is irreversible. (y/n): y
Regenerating TLS certificates
Waiting for SSH to be available...
Detecting the provisioner...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...

$ docker-machine env
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.50:2376"
export DOCKER_CERT_PATH="/Users/mandrake/.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="default"
# Run this command to configure your shell:
# eval $(docker-machine env)

私の環境はOSX、VirtualBoxboot2docker.isoです

これがお圹に立おば幞いです🙂
ずころで新機胜のリク゚ストには+1😉
也杯。

はい、特定のIPで䜜成するオプションがありたす。 あなたがする必芁があるのはでip / ip-rangeを指定するこずです
--virtualbox-hostonly-cidrオプション。

䟋えば

  • 特定のIPを割り圓おたい堎合、たずえば10.15.1.24を割り圓おたい堎合は、適切な構成になりたす最も重芁なのは、ここで䜿甚しおいるマスクです。特定のIPの堎合、サブネットマスクを32に蚭定する必芁がありたす
    docker-machine create --driver virtualbox --virtualbox-hostonly-cidr "10.15.1.24/32" dev

  • 特定のIP範囲からIPを遞択する堎合は、適切なサブネットマスクを䜿甚する必芁がありたす。

ホストファむルを曎新し続ける必芁があるずいう問題がある堎合は、コンテナにAvahiをむンストヌルしお、mDSNを䜿甚できたす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡