簡體   English   中英

Docker for Mac 虛擬機 IP

[英]Docker for Mac VM IP

我剛剛遷移到使用 Docker for Mac,從之前使用 Docker Toolbox 和 virtualbox for OSX。

我曾經使用$(docker-machine ip default)獲取機器 IP 地址。

有沒有可靠的方法來獲取 Hyperkit IP 地址?

謝謝!

Docker 工具箱相反, Docker for WindowsDocker for Mac旨在讓您感覺Docker直接在您的操作系統上運行,因此它們使用在輕量級管理程序(而不是VirtualBox )下運行的輕量級虛擬機,由docker可執行文件直接處理.
因此,您不會使用docker-machine看到它們,也不會看到除localhost之外的其他 IP 地址。

Docker for Windows依賴於HyperV虛擬機管理程序,它允許到tcp://localhost:2375的網絡連接。

Docker for Mac依賴於xhyve管理程序,它的實現方式僅通過套接字unix:///var/run/docker.sock提供連接。

解決方法

Docker for Mac提供 TCP 連接:

  1. 安裝socat 隨着釀造

    brew install socat

  2. 運行此socat命令將 TCP 請求轉發到套接字

    socat TCP-LISTEN:2375,reuseaddr,fork,bind=localhost UNIX-CONNECT:/var/run/docker.sock

  3. tcp://localhost:2375上映射您想要的內容

如有必要,由您在啟動時運行socat命令。

例如,這對我將Webstorm nodeJS 調試器關聯到nodeJS容器很有用(因為在撰寫本文時, Webstorm docker 集成插件支持docker調試,但不支持通過 unix 套接字)。

Docker for Mac 限制文檔

https://docs.docker.com/docker-for-mac/networking/#/known-limitations-use-cases-and-workarounds

macOS 上沒有 docker0 橋接器

由於 Docker for Mac 中的網絡實現方式,您無法在 macOS 中看到 docker0 接口。 這個接口實際上是在 HyperKit 中。

無需像使用 docker docker-machine那樣直接使用 xhyve VM 的 IP 地址。 所有端口映射都直接映射到localhost

$ docker run -d -p 8080:80 nginx:latest
$ curl localhost:8080

另請參閱官方文檔

當您使用-p參數運行容器時,例如: $ docker run -p 80:80 -d nginx Docker for Mac 將使容器端口在localhost可用。

您可以將 docker 映像用於 socat,它會在您每次啟動“docker for mac”時啟動

docker run -d --restart=always -p 2376:2375 -v /var/run/docker.sock:/var/run/docker.sock bobrik/socat TCP4-LISTEN:2375,fork,reuseaddr UNIX-CONNECT:/ var/run/docker.sock

找到您的 docker API ip 地址:

ifconfig | grep 'inet 192'| awk '{ print $2}'

我目前的解決方案是使用 Docker Machine(一個在另一個 IP 地址下可用的 linux VM)創建容器,並將容器的所有流量路由到 Docker 機器 VM。

sudo route -n add -net 172.18.0.0/16 192.168.99.100

您可以使用docker inspect獲取 docker 容器的網絡范圍,使用docker-machine ip docker 機器 VM 的 IP 地址

另一種解決方法是使用sudo ifconfig lo0 alias 172.17.0.1這樣您仍然可以使用相同的靜態 IP 地址(如果您的基於 Linux 的同事或 bash 腳本堅持使用它)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM