![](/img/trans.png)
[英]How can I make AppleScript SOAP work with existing SOAP webservices (e.g. W3Schools' CelsiusToFarenheit example)?
[英]How does docker's `net=host` setting work, and how can I do something similar with e.g. VirtualBox?
Docker 在此處記錄了一個運行選項net=host
,允許您運行與主機共享網絡堆棧的虛擬機 - 例如,docker容器內的進程可以通過localhost
連接到主機,反之亦然。
我想在Mac OS X上設置一個Linux VM來做同樣的事情; 我嘗試過使用Vagrant及其各種網絡設置而沒有太多運氣。
Docker的VM是否依賴主機和客戶操作系統都是Linux,或者是否有某種方法可以實現我缺少的OSX-> Linux?
感謝各位同事的幫助,我找到了解決這個問題的方法。 此解決方案適用於boot2docker / VirtualBox。 我剛用boot2docker init
創建了我的boot2docker init
VM,我沒有對VM配置進行任何特定的更改。
首先,使用--net=host
運行--net=host
,以便它與主機VM共享網絡,例如
docker run -it --net=host ubuntu bash
然后,您需要從用於boot2docker ssh
容器的VM中找到IP地址,您可以通過在OSX主機上運行boot2docker ssh
來完成此操作。 然后,您可以通過查找其網關來查找VM的IP地址:
$ netstat -rn | grep UG | awk '{print $2}'
10.0.2.2
所以在我的情況下它是10.0.2.2。 您現在可以使用此IP地址訪問主機上打開的端口,即從Docker容器在OSX上運行的程序。
要自動化,您可以先找到IP地址,然后將其作為環境變量傳遞給docker命令...
我找到了另一個有效的答案,我將在這里分享,以便人們可以選擇:)
首先,您需要弄清楚OSX主機上首選網絡接口的IP地址是什么。 以下shell命令為我做了這個:
echo "show State:/Network/Global/IPv4" | scutil | grep PrimaryInterface | awk '{print $3}' | xargs ifconfig | grep inet | grep -v inet6 | awk '{print $2}'
在我的情況下,這打印出: 10.226.98.247
然后你可以簡單地在docker中使用該地址,或者甚至更好地為這個地址提供docker內部的主機名:
docker run -it --add-host dockerhost:10.226.98.247 ubuntu bash
然后,您可以在dockerhost
容器中使用相同的dockerhost
主機名,無論您在哪個環境中啟動容器...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.