Machine: [طلب الميزة] حدد عنوان IP ثابتًا لأجهزة VirtualBox الافتراضية

تم إنشاؤها على ١٦ أغسطس ٢٠١٥  ·  212تعليقات  ·  مصدر: docker/machine

مرحبًا ، لقد كنت أبحث في المستندات والمشكلات لمعرفة ذلك ولكن لا يمكنني العثور على إجابة.

بشكل أساسي ، أريد أن أكون قادرًا على تحديد عنوان IP لجهاز افتراضي (أي القيمة المدرجة ضمن "URL" في docker-machine ls ) عندما أقوم بإنشائه باستخدام docker-machine create .

أريد هذا لأنني كنت أعتمد على العنوان الافتراضي لـ 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 المضيف فقط.

بشكل افتراضي ، يبدو أن عامل الإرساء يختار واحدًا بشكل عشوائي ، لذا يبدو أنه مجبر على استخدام الجهاز مقابل 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

مواطن يحتاج هذه الميزة على الرغم من!

krinkere لست متأكدًا من نجح في تثبيت OSX الخاص بي من خلال القيام بذلك ، لكنه فشل عند استخدام الجهاز على Linux ، الأمر الذي تطلب تعديلات على تكوين dhcpserver vboxnet0 :

$ 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: ، لكنه يعمل الآن: ابتسم:

أحب أن أرى هذه الميزة !!

luislavena - شكرا لردكم

هذا ما أحصل عليه على جهاز Mac الخاص بي.

$ docker-machine create - driver virtualbox --virtualbox-hostonly-cidr "192.168.99.3/24" ديف
جاري إنشاء VirtualBox VM ...
جاري إنشاء مفتاح SSH ...
بدء تشغيل VirtualBox VM ...
جارٍ بدء VM ...
لمعرفة كيفية توصيل Docker بهذا الجهاز ، قم بتشغيل: docker-machine env dev

$ docker-machine ip dev
192.168.99.100

على الرغم من أن لدي عنوان IP في الشبكة الفرعية الصحيحة ، إلا أنه ليس عنوان IP الذي أرغب في استخدامه ... سيحب Def رؤية هذه الميزة

+1 ميزة مفيدة

+1 ستساعدنا هذه الميزة حقًا!

نحن نستخدم آلة الإرساء لتشغيل مجموعة Elasticsearch محلية ولدينا إدخال /etc/hosts لـ 192.168.59.103 والذي يتم تعيينه لـ elastic-local.mycompany.com . نظرًا لأننا انتقلنا إلى docker-machine من boot2docker ، فقد اضطررنا باستمرار إلى تحديث إدخال ملف المضيفين هذا يدويًا إلى أي عنوان IP الجديد المخصص لـ Docker VM الخاص بنا. يمكننا كتابة بعض الأتمتة التي من شأنها تحديث إدخال ملف المضيفين هذا بالنسبة لنا ، ولكن سيكون الأمر أبسط بكثير إذا سمحت لنا آلة الإرساء فقط باستخدام عنوان IP قابل للتكوين للأجهزة الجديدة.

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1 (و)

+1

+1

+1

أستخدم مؤقتًا بعض البرامج النصية bash لتحديث ملفات المضيفين ولكن هذا كلودجي نظرًا لأنه يتعين عليك تحديث / etc / hosts عبر البرنامج النصي sudo'd ولكن نظرًا لأنه يمكنك الحصول على ip من جهاز docker-machine فإنه يعمل. قد أشارك في جوهر.

ianlintner-wf ، شارك البرنامج النصي من فضلك. أنا على وشك أن أكتب واحدة مثل هذه بنفسي ، لكن إذا لم أتمكن من إعادة اختراع العجلة ، فسيكون ذلك رائعًا .. نعم ..

هذا هو النص الأساسي الذي أستخدمه. لقد قمت بتنظيفها قليلاً ، لكنها تفتقر إلى المزيد من المعلمات الافتراضية الرسمية وغيرها من الأشياء.

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

+1 من فضلك!

شكرا على السيناريو @ ianlintner-wf. لقد كتبت واحدًا يضيف ديناميكيًا المضيف / IP لأي أجهزة عامل ميناء قيد التشغيل. تم الاختبار على OS X El Capitan.

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

يتم تخزين زيادة IP مؤقتًا بواسطة خادم VirtualBox DHCP. سيؤدي إيقاف وإعادة تشغيل برنامج VirtualBox إلى إعادة تعيين زيادة IP.

+1 ، لا يزال مطورو OSX لدينا يستخدمون boot2docker لأن بيئةنا تعتمد على إدخالات ثابتة / etc / hosts. (راجع للشكر على السيناريو @ ianlintner-wf)

+1

+1

+1

+1

+2

حل الاختراق الخاص بي ، وهو بالتأكيد ليس للجميع: أنا أشغل Cassandra في جهاز عامل إرساء ، وأريد أن أتمكن من الوصول إليه من تطبيق node.js الذي أطوره. بدلاً من استخدام عنوان 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)"

والتي تمكن من إعادة توجيه المنفذ لنفق المنفذ من المضيف المحلي إلى عامل الإرساء VM. الآن يمكنني فقط الاتصال بالمضيف المحلي: 9042. (سيكون هذا أسهل بكثير إذا قام شخص ما بإصلاح https://github.com/docker/machine/issues/41.: D)

luislavena شكرًا لك ، فقط

+1

+1 ، سأجرب البرنامج النصي مع التحديث التلقائي لملف المضيفين ، لكنني بالتأكيد أريد هذه الميزة!

استنادًا إلى برنامج cookandy & @ ianlintner-wf ، لقد قمت بإنشاء لي.

يمكنك تكوينه بخريطة بين docker-machine-name واسم المضيف.

سيقوم بتحديث مضيفيك عن طريق إزالة جهاز الرصيف الأقدم والآخر الجديد

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.

+1 أي ETA على هذه الميزة؟

قد يكون الحل البديل لبعض حالات الاستخدام هو إنشاء آلات مثل:

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 ، يجب أن يحصل الجهاز دائمًا على IP .100 عند البدء.

@ schmunk42 يعمل جيدًا جدًا: +1:

يحتوي Virtualbox الخاص بي على نطاق dhcp 192.168.99.100 - 255 وأريد تعيين IP قبل 100.

لقد وجدت حيلة بسيطة لتعيين عنوان 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

يقوم هذا الأمر بإنشاء ملف bootsync.sh يتم البحث عنه بواسطة البرامج النصية لبدء تشغيل boot2docker وتنفيذه.

الآن أثناء تشغيل الجهاز ، يتم تنفيذ الأمر وتعيين 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:

تعجبني الطريقة التي أصلح بها

يمكنك العثور على بعض الوثائق هنا أو هنا

+1
أنا أعمل مع 3 VM ولدي دائمًا مشاكل في الاتصال عبر ssh وتكوين الأدوات المساعدة وملف المضيفين وما إلى ذلك.

+1

: +1:

+1

+1

+1

+1

+1 أحاول أتمتة إنشاء الجهاز ولا يمكنني توقع الحصول على أذونات لإضافة إدخالات إلى /etc/hosts مرارًا وتكرارًا. إن امتلاك عنوان IP ثابت يعني الاضطرار إلى إعداد هذا مرة واحدة فقط.

انتهى بي الأمر بإعداد برنامج نصي يملأ dnsmasq مسبقًا على المضيف باستخدام docker-machine ip

في 19 كانون الأول (ديسمبر) 2015 ، في تمام الساعة 12:18 مساءً ، كتب Pedro Cattori [email protected] :

+1

-
قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub.

ميزة مفيدة للغاية: +1:

أحب إصلاح استبدل eth1 بـ eth1:1 في الأمر أعلاه) نظرًا لأن الواجهة eth1 تقوم بتشغيل DHCP وستعود في النهاية إلى عنوان IP المعين لـ DHCP.

لست متأكدًا من المدة التي يستغرقها تحديث عقد إيجار dhcp (تم تشغيله ليوم واحد مع الإصلاح الأولي قبل أن أحصل فجأة على الخطأ "تحتاج إلى تجديد شهادات 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 ؟ أريد أمرًا واحدًا يمكن لكل فرد في الفريق تشغيله لتشغيل dev 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 القديم.

يمكنك استخدام المتشرد لتشغيل آلة عامل ميناء ثم استخدام مكون إضافي مثل المتشرد المضيف. ولكن بالطبع لديك مشاكل أخرى يجب التعامل معها إذا كنت تريد أن يكون الأمر واحدًا لبدء تشغيل النظام الأساسي عبر VM.

لا يوجد حل مثالي في الوقت الحاضر (AFAICT).

نعم ، أعتقد أنني سأبقى مع Vagrant في الوقت الحالي.

أنا أقوم بإنشاء صورة مربع Vagrant مع عامل تشغيل يعمل بـ DOCKER_OPTS="-H 0.0.0.0:2375" . ثم يمكنني إنشاء vm متشرد باستخدام IP خاص بشبكة خاصة مشفرة واستخدام 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

dcosson wrt البرمجة النصية.

لقد بدأت للتو في تشغيل جهاز الإرساء ثم قم بتشغيل الأمرين التاليين (أحدهما لقتل عميل dhcp ، واثنان لتعيين عنوان IP ثابت). اخترت عدم تشغيل "إعادة تشغيل عامل الإرساء" لتشغيل bootsync.sh. ربما لا يعمل نص بدء التشغيل هذا؟ من الممكن أيضًا أن يكون عميل dhcp يعبثك ويعيد تعيين عنوان eth1 IP عليك.

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

اضطررت إلى تعديل مقتطف roocell قليلاً لقتل خادم 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 ، إليك البرنامج النصي الخاص بي لتعيين عنوان IP ثابت لجهاز VM لجهاز الرصيف:
http://stackoverflow.com/a/35367277/6309

+1

+1

+1

+1

ما فعلته هو إنشاء نسخة من ملف المضيفين في أي مكان.

قم بتعيين عنصر نائب للأجزاء التي ترغب في تغييرها ديناميكيًا

<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

لمعلوماتك: أنا أستخدم gnu-sed باعتباره سيدًا الافتراضي الخاص بي ، لذا لن يكون هو الخادم الموجود على جهاز Mac الخاص بك
brew install gnu-sed --with-default-names

وفي نص البداية الخاص بي ، قمت فقط باستبدال هذه الأداة ثم قم بإيقاف تشغيل ملف المضيفين. الآن إذا كان لديك نسختك من ملف المضيفين كما كان من قبل. لا ينبغي أن تؤثر على أي من خدماتك الأخرى

#!/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 متسقة:

#--- 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 إلى النجاح أكثر من غيرها ، وقد حظيت بأفضل حظ مع تلك التي من الشكل 192.168.x.100 مثل x <99 .

وإليك ما أستخدمه للتبديل بينهم بسرعة:

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

اضطررت أيضًا إلى إضافة البوابة الافتراضية ...

إليك كيفية القيام بذلك على Windows 10 باستخدام PowerShell & Hyper-V (مع خدمة VMNat.dll لـ NAT بدلاً من ICS).

  • الشبكة الفرعية هي 192.168.233.0/24
  • يعمل خادم DHCP على .1
  • DNS و NAT على .2
  • آلة عامل ميناء جديدة لأخذ .10 IP ثابت

بوويرشيل
إنشاء جهاز عامل ميناء - محرك هيبرف - محول افتراضي افتراضي "VMWare NAT" - ذاكرة تشعبية "512" consul0

لم تختبر بعد ما إذا كانت البوابة الافتراضية تعمل بعد إعادة التشغيل ...

صدى "kill` `more /var/runudhcpc.eth0.id "`nifconfig eth0 192.168.233.10 قناع الشبكة 255.255.255.0 بث 192.168.233.255 لأعلى" | docker-machine ssh consul0 "sudo tee /var/lib/boot2docker/bootsync.sh"> $ null

اقتل dhcp على واجهة eth0 على الفور

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

طرح eth0 مع IP ثابت جديد ..

الأمر التالي معلق ... لا بد لي من CTRL + C بعد فترة ...

docker-machine ssh consul0 "sudo ifconfig eth0 192.168.233.10 قناع الشبكة 255.255.255.0 البث 192.168.233.255 up"

إصلاح شهادات tls الخاصة بعنوان IP الديناميكي القديم

إعادة إنشاء عامل ميناء-آلة-شهادات consul0

تأكد من أن الإنترنت لا يزال يعمل عن طريق إعادة إضافة البوابة الافتراضية (لقد فقدت في حالتي)

docker-machine ssh consul0 "المسار إضافة الافتراضي gw 192.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 فشل ولا يمكن لـ Hyper-V الحصول على IP للمحول ...

+1

+1

ما زلنا في وضع زائد واحد؟ :)

إنه يفسد إعداداتي طوال الوقت وسيكون من المنطقي تمامًا إعطاء IPS ثابتًا خاصةً عند تشغيل بيئات مطوّرة متعددة لمشاريع مختلفة محليًا

نحن في انتظار التأكيد على أن الاستراتيجية المذكورة أعلاه تعمل مع الآخرين الذين يستخدمون آلة الإرساء على نظام التشغيل Mac OSX. هنا في شكل أكثر إيجازًا:

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

حسنا ، أنا محكوم عليه بالفشل. تستخدم شركتي 192.168.99.x لبروتوكول IP المحلي الخاص بنا ، لذا يُرجى السماح بتغيير هذا.

xbeta - هل يمكنك فقط إعادة تكوين شبكة VBox؟ لن أكون قادرًا على إخبارك بكيفية القيام بذلك لأنني أستخدم Hyper-V ، ولكن إذا كنت تستخدم برنامج تشغيل VBox الافتراضي ، فقم فقط بإلقاء نظرة على nics الافتراضية التي تم إنشاؤها بواسطة ذلك ، docker-machine هو مجرد الالتفاف حول VBox

+1

هل يمكن للناس ، من فضلك ، التوقف عن التعليقات +1؟ يحتوي Github الآن على ميزة +1. ما عليك سوى النقر فوق + Smiley في الجزء العلوي الأيمن ، والنقر فوق رمز الإعجاب. إنه ينقل دعمك دون إرسال بريد إلكتروني إلى كل من علق هنا. # هههههههههه

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 for Mac إعداد مضيف واحد (يعد جهاز Mac الخاص بك هو المضيف).
حل محلي آخر هو VmwareFusion الذي يحتفظ بـ IP للمضيف عند إعادة تشغيله. هذا هو الإصلاح الأخير بالمناسبة.
لذا نعم ، نحن بحاجة إلى طريقة أسهل لتحديد عناوين IP الثابتة لـ VirtualBox.

تضمين التغريدة وهذا هو سبب استمرار تشغيل Docker Toolbox. فقط حتى أتمكن من إنشاء سرب. ومع ذلك ، أفضل رؤية طلب الميزة هذا

+1

+1

+1

+1

+1

إذا كنت بحاجة إلى إعداد عنوان IP ثابت لجهاز boot2docker ، فقم فقط بتحرير / 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

أعتقد أن الوقت قد حان ، على الأقل لنظام التشغيل Mac n Windows ، لإغلاق هذا الطلب باعتباره غير ذي صلة. تم حل جميع مشاكلي المتعلقة بـ docker-machine ip بواسطة docker for Mac. افكار الجميع؟

caledhwa أوافق ،

يدعمcaledhwa Docker لنظام التشغيل Mac

caledhwa كما قال davidolrik ،

👍

+1

لا تزال هناك حركة على هذا؟ هذا مانع لاستخدام آلة الإرساء حيث لا يمكنني تغيير عنوان الشبكة المتضارب للضيف.

لتكون قادرًا على إصلاح IP لجهاز عامل الإرساء لـ virtualbox ، فهي ميزة ضرورية.

لقد قمت بإعداد العديد من مضيفي Docker كمثال سرب ، وبعد إعادة التشغيل ، تغير عنوان IP لكل مضيف تقريبًا ، وسيظهر الخطأ:

x509: certificate is valid for 192.168.99.103, not 192.168.99.100

نعم ، قد أتمكن من استخدام docker-machine regenerate-certs لإصلاح مشكلة الشهادة ، ومع ذلك ، تغير عنوان IP لمتجر القيمة الرئيسية أيضًا ، والنتيجة هي توقف سربتي عن العمل ، حتى أقوم بتغييرها يدويًا في التكوين واحدًا من خلال مرة أخرى.

ربما سيكون من الأفضل إزالتها وإنشاء هذا المضيف مرة أخرى. ومع ذلك ، ستفقد كل الصور / الحاويات الموجودة في تلك الأجهزة المضيفة.

لذا ، يرجى إتاحة تحديد عنوان IP الخاص بالمضيف ، أو تخصيص عنوان IP ثابت تلقائيًا لمضيف عامل الإرساء الافتراضي ، وعدم السماح له بالتغيير أثناء إعادة التشغيل.

+1
لدي حالة أستخدم فيها dnsmaq لـ DHCP و DNS ، بناءً على التعليقات أعلاه ، حاولت تعطيل خادم DHCP لواجهة الصندوق الافتراضي في حالتي ، vboxnet4 مثل VBoxManage dhcpserver remove --netname HostInterfaceNetworking-vboxnet4 وأحتاج إلى إعادة التشغيل الجهاز الذي يختار نطاق DHCP من dnsmasq ، المشكلة التي أواجهها هي أنه في كل إنشاء جهاز جديد ، تقوم آلة الإرساء بتمكين dhcp Sever على vboxnet4 والخوادم الأخرى التي تستخدم dnsmasq غير قادرة على ذلك ابحث عن آلة (آلات) عامل الإرساء ، ولا بد لي من تكرار إزالة vnet ثم إعادة تشغيل أجهزة الرصيف. سيكون رائعًا إذا تمكنا من إضافة علامة إلى docker-machine-create للمساعدة في عدم تمكين أي شيء من نوع dhcp.

+1

+1

+1

+1

هذا أمر يلخص عمل /etc/hosts إذا طلب ذلك.

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

لقد استخدمناه خلال الأسابيع القليلة الماضية بنجاح كبير. فقط قم بتشغيله مباشرة بعد إنشاء آلة الرصيف الخاصة بك.

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 وبيئات النشر الأخرى. لكنها حقًا موضع ترحيب.

+1

+1

+1

+1

+1

+1

يعمل حل

+1 ، واجهت نفس المشكلة اليوم باستخدام ZooKeeper و VirtualBox

يعمل حل

هل تقتل عميل DHCP؟ بعد أن يعود ، هل يمكنك التأكد من أن عميل DHCP لا يزال قيد التشغيل؟

لقد وجدت حلاً آخر يناسبني أخيرًا: أبدأ ببساطة عامل السرب على كل جهاز باستخدام _advertise = $ (ifconfig eth1 | grep -Eo "192.168.99.1 [0-9] {2}"): 2376_ ونشر الإصدار الحالي IP إلى ZooKeeper (أو أي خدمة اكتشاف أخرى). هذا جيد في حالتي حيث يمكنني الاعتماد على تعيين عنوان 192.168.99.1 ** لكل جهاز (إنه مجرد إعداد تجريبي). أعتقد أن هناك تعبيرات regex أكثر تقدمًا يمكن تطبيقها على نطاقات IP عشوائية. هذا ليس لطيفًا وقد يكون نوعًا من الاختراق ، لكنه يؤدي المهمة.

+1

+1

تسببت عمليات تغيير عناوين IP وشهادات TLS التي تم تغييرها بشكل تعسفي والتي أصبحت غير صالحة فجأة عند إعادة التشغيل في الكثير من لحظات التعثر وإضاعة ساعات العمل

هل هذا حتى من الأولويات؟ تم فتح هذه القضية لمدة 13 شهرًا. +10000

أعتقد أن هناك خلافًا فلسفيًا بين بعض الأشخاص في فريق آلة الرصيف وبقية العالم حول هذه المسألة. إن استخدام DHCP وامتلاك عنوان IP غير محدد لا قيمة له إلى حد كبير لجميع حالات الاستخدامات الخاصة بي.

لقد كنت أستخدم هذا الحل في العام الماضي. وهي مقتبسة من بعض الحلول أحادية الخط الموصوفة أعلاه.

SSH على آلة الرصيف
docker-machine ssh الافتراضي

قم بإضافة / تحرير البرنامج النصي لبدء التشغيل 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-machine regenerate-certs default

+1

+1

+1 (لآلة الرصيف و jimmidyson / minishift)

+1

eytanhanig للأسف طريقتك لم تنجح معي. أنا على OS X 10.11.6. تحصل الأجهزة على عناوين IP المطلوبة ولكن هناك خطأ في الاتصال بها. يقترح Docker إعادة إنشاء المفاتيح ، لكن ذلك لم يحل المشكلة.

+1

+1

إنه لأمر مثير للسخرية كم من الوقت يقضيه الأشخاص في إجراء 1+ لهذا.

+1

أحب هذه الميزة ، ومع ذلك ، لم أجد أي نهج أنيق لتطبيقها.

سبب المشكلة هو DHCP في Virtualbox ، في حالة إعادة تشغيل النظام ، سيفقد خادم DHCP جميع بيانات IP المخصصة ، ويحاول إعادة تخصيص IP لتلك الأجهزة الافتراضية ، والتي من غير المحتمل أن يكون لها نفس IP للمرة الأخيرة.

لست متأكدًا من أنه من الصواب السماح لـ Virtualbox بمواصلة بيانات DHCP. ولن يقوم Boot2docker بإثبات عنوان IP المخصص بواسطة DHCP ، وهو في الواقع سلوك صحيح.

IMHO ، لا أعتقد أن محاولة حل DHCP هي الطريقة الصحيحة للقيام بذلك ، أعتقد أن إضافة القدرة على تحديد IP ثابت إلى Boot2docker وبرنامج تشغيل Virtualbox لآلة الرصيف يجب أن يحل المشكلة.

ربما يكون من الأفضل تنفيذ IP الثابت في مشروع https://github.com/boot2docker/boot2docker أولاً ، مثل إضافة إمكانية تحديد عنوان IP ثابت ، بدلاً من استخدام DHCP.

هذا هو الكود لتشغيل مكالمة 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 -------------------------------"

يمكننا جعلها مشروطة ، عن طريق إضافة مجموعة من تكوين IP في /var/lib/boot2docker/profile ، وإذا تم تكوين IP ثابت ، فاستخدم IP الثابت بدلاً من طلب IP من DHCP.

بعد ذلك ، يمكننا إضافة خيار واحد أو أكثر لبرنامج التشغيل virtualbox لتحديد تكوين IP الثابت ، مثل --virtualbox-boot2docker-cidr ، --virtualbox-boot2docker-gateway ، --virtualbox-boot2docker-dns ...

+1

+1

+1

يا رفاق ، تعال. هل يمكننا من فضلك إيقاف 1+ في قضية من الواضح أنها طويلة الأمد؟ كان هناك زر "أعجبني" تم تنفيذه لهذا السبب بالذات. لا حاجة للمشتركين البريد العشوائي.

لا حاجة للمشتركين البريد العشوائي.

يمكنك إلغاء الاشتراك.
1

أنا جميعًا لإرسال رسائل غير مرغوب فيها إلى المشتركين.

بعض هؤلاء المشتركين هم جزء من فريق المشروع.

في 26 كانون الثاني (يناير) 2017 ، الساعة 14:20 مساءً ، تلقي إشعارات "Sergey Nevmerzhitsky"
كتب:

لا حاجة للمشتركين البريد العشوائي.

يمكنك إلغاء الاشتراك.
[الصورة: 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 الثابتة أكثر تعقيدًا مما تتطلع إليه للوصول إلى الحالة الصحيحة وضرب حالات الاستخدام التي قد يفكر بها المشتركون في هذا الموضوع - ربما يمكن بدء مشكلة في boot2docker repo للمناقشة.)

أنا لا أريد حقا IP ثابت. ولكن بمجرد اختيار عنوان IP أثناء الإنشاء ، يجب أن يحتفظ به في عمليات إعادة التشغيل اللاحقة. هل هذا متاح بالفعل؟

كان لدي عامل إرساء مع VPN ولم يتم تحميل 192.168.99.100 القياسي. اعتقدت أن هذا كان بسبب اتصال VPN ، لذلك قمت بإعداد شبكة جسر داخل Virtualbox للوصول إلى عامل الإرساء عبر 192.168.1.159. أود أن يظهر هذا على عنوان IP المنشور لـ Kitematic. هل هناك أي طريقة للقيام بذلك؟

بالنسبة لأولئك الذين لا يستطيعون انتظار تنفيذ هذه الميزة ، من الممكن تعيين عنوان IP مخصص ، بالإضافة إلى وحدة المعالجة المركزية / الذاكرة المخصصة باستخدام موفر Vagrant VirtualBox وبرنامج التشغيل العام لآلة الرصيف .

على سبيل المثال في windows ، ضع ملف Vagrant هذا:

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

وضع المفتاح الخاص الافتراضي المتشرد ssh باسم vagrant.pem

و اهرب

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 مخصص ووحدة معالجة مركزية وذاكرة وما إلى ذلك تم تكوينه عبر المتشرد في نفس الوقت يمكن الوصول إليه عبر جهاز docker-machine.

يمكنك العثور على مجموعة ملفات العمل لنظام التشغيل Windows في https://github.com/joelhandwell/dockerhost

jcwilson مرحبًا جوش وآخرون ، شكرًا جزيلاً .. لقد فرقت النص البرمجي لإصلاح المشكلة نفسها (راجع https://github.com/minishift/minishift/issues/343 ، https://github.com/minishift / minishift / issues / 598) بالاشتراك مع minishift:

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

أي أخبار؟

حاليًا ، أقوم بتجربة هذا من أجل Minishift: https://github.com/minishift/minishift/issues/1293
على الرغم من أن هناك طريقة أخرى تتمثل في استخدام شيء مثل cloud-init (والذي قد يكون ثقيلًا بالنسبة لهذا النهج ، أو تضمين خادم DHCP داخل ثنائي يستند إلى Go واستخدام هذا لفرض عنوان IP المخصص)

+1.
وجود أكثر من جهاز في الوقت الحالي هو ألم رهيب. إذا كنت تستخدم شهادات إضافية (على سبيل المثال ، لمستودع عامل الإرساء المخصص) وتغيير ترتيب بدء تشغيل الأجهزة ، فعليك القيام بما يلي:

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 (على سبيل المثال ، إضافته إلى ملف المضيفين وقد تنسى عناوين IP).

+1

+1

+1
thx jcwilson ، البرنامج النصي docker-machine-ipconfig جيد جدًا! كنت بحاجة إلى تغيير eth1 إلى eth0 في النص ، بعد ذلك ، كان النص يعمل بشكل مثالي بالنسبة لي. أنا أستخدم برنامج vmware vsphere.

وداعا.

+1

كجزء من minishift ، قمنا بتنفيذ https://github.com/minishift/minishift/issues/1316 وكان هذا يعمل بشكل جيد حتى الآن. نحن نبحث الآن عن بدائل لفعل الشيء نفسه مع برامج Hypervisor الأخرى بمرور الوقت ، ولكن أولاً سنصلح العنوان باستخدام https://github.com/minishift/minishift/issues/1457 (لمنع تعيين عنوان جديد) . لم نتمكن من حجز الوقت بعد ، سنهبط بهذا في minikube أيضًا.

+1

أبسط حل وجدته هو الاعتماد على تسلسل بدء تشغيل الأجهزة الافتراضية بواسطة آلة doker.

يحتوي VirtualBox على خادم DHCP الذي يبدأ في تعيين عناوين IP من 192.168.99.100.

  1. أوقف كل الأجهزة الافتراضية
    docker-machine stop ${docker-machine ls -q}
    ستطلق هذه الخطوة جميع العناوين المخصصة لـ VirtualBox DHCP

  2. بدء VMs بالترتيب
    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 ، يستغرق الأمر أكثر من 15 ثانية لـ DHCP waiting for an IP (إذا تم كسر الإنترنت ، يستغرق الأمر أكثر من دقيقتين) ، أعتقد أنه إذا كان بإمكانك تعيين IP ثابت ، فيمكنه التمهيد بسرعة .

تمت إضافة هذه الوظيفة إلى Minishift spome منذ زمن ، لكنها
يحتاج إلى تعديل في ISO ليعمل.
في Hyper-V واجهنا مشكلات لا تظهر في صورة boot2docker
لعبت بشكل جيد ... لذلك عملت فقط على الصور المستندة إلى CentOS و Fedora.
أيضًا ، هذا لا يعمل مع برنامج تشغيل KVM الحالي لأنه يعتمد على DHCP.

سيحتاج هذا إلى إعادة تصميم طفيفة ...

في الأحد 3 فبراير 2019 الساعة 11:08 مساءً كتب fcying [email protected] :
>

عندما أقوم بتشغيل بدء تشغيل docker-machine.exe ، يستغرق الأمر أكثر من 15 ثانية لـ DHCP في انتظار IP (إذا تم كسر الإنترنت ، فسيستغرق الأمر أكثر من دقيقتين) ، وأعتقد أنه إذا كان بإمكانك تعيين عنوان IP ثابت ، فيمكنه التمهيد بسرعة.

-
أنت تتلقى هذا لأنك علقت.
قم بالرد على هذه الرسالة الإلكترونية مباشرةً ، أو اعرضها على GitHub ، أو قم بكتم صوت الموضوع.

-

جيرارد براد | http://gbraad.nl
[القيام بأمور مفتوحة المصدر]

أبسط حل وجدته هو الاعتماد على تسلسل بدء تشغيل الأجهزة الافتراضية بواسطة آلة doker.

يحتوي VirtualBox على خادم DHCP الذي يبدأ في تعيين عناوين IP من 192.168.99.100.

  1. أوقف كل الأجهزة الافتراضية
    docker-machine stop ${docker-machine ls -q}
    ستطلق هذه الخطوة جميع العناوين المخصصة لـ VirtualBox DHCP
  2. بدء VMs بالترتيب
    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 لن يعمل ، لكنني لا أعرف السبب.

اضطررت أحيانًا إلى قتل عملية VBoxNetDHCP.exe على نظام التشغيل Windows ، لجعل vbox يقوم بتعيين عناوين IP بدءًا من 192.168.99.100
خلاف ذلك ، لن يقوم vbox بإصدار عناوين IP التي تستخدمها الأجهزة السابقة (لست متأكدًا من السبب)

👍

انها حقا ستجعل حياتي أسهل.

أبسط حل وجدته هو الاعتماد على تسلسل بدء تشغيل الأجهزة الافتراضية بواسطة آلة doker.

يحتوي VirtualBox على خادم DHCP الذي يبدأ في تعيين عناوين IP من 192.168.99.100.

  1. أوقف كل الأجهزة الافتراضية
    docker-machine stop ${docker-machine ls -q}
    ستطلق هذه الخطوة جميع العناوين المخصصة لـ VirtualBox DHCP
  2. بدء VMs بالترتيب
    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 لن يعمل ، لكنني لا أعرف السبب.

انها مفيدة للغاية.

لتعيين 192.168.99.50 static ip address 192.168.99.50 لجهاز الإرساء الخاص بي (افتراضي) على VirtualBox ، استخدمت:

$ 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 مع
--virtualbox-hostonly-cidr option.

فمثلا:

  • عندما تريد تعيين عنوان 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 التقييمات