docker-machine 无法在 macOS 上创建机器,VBoxManage 返回 E_ACCESSDENIED 错误

Foa*_*oad 16 macos virtualbox docker docker-machine

我已经dockerdocker-machine、 并virtualbox使用 HomeBrew 安装:

Docker 版本 20.10.11,构建 dea9396e18
docker-machine 版本 0.16.2,构建 bd45ab1
VBox管理版本6.1.30r148432

当我尝试创建一台新机器时

docker-machine create -d virtualbox default
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

运行预创建检查...
创建机器...
(默认)将 /Users/foobar/.docker/machine/cache/boot2docker.iso 复制到 /Users/foobar/.docker/machine/machines/default/boot2docker.iso...
(默认)创建 VirtualBox 虚拟机...
(默认)正在创建 SSH 密钥...
(默认)启动虚拟机...
(默认)检查网络以根据需要重新创建...
(默认)找到一个新的仅主机适配器:“vboxnet0”
创建机器时出错:创建机器期间驱动程序出错:在机器启动时设置仅主机网络时出错:/usr/local/bin/VBoxManage hostonlyif ipconfig vboxnet0 --ip 192.168.99.1 --netmask 255.255.255.0 失败:
VBoxManage:错误:代码 E_ACCESSDENIED (0x80070005) - 访问被拒绝(扩展信息不可用)
VBoxManage:错误:上下文:“EnableStaticIPConfig(Bstr(pszIp).raw(),Bstr(pszNetmask).raw())”位于文件VBoxManageHostonly.cpp的第242行

我尝试过很多事情

  • 重新安装我的所有软件包
  • 运行上面的命令sudo
  • 按照此处的kextload说明使用“启用内核扩展”
  • 检查是否有过去的孤立机器,如此处建议的那样docker-machine ls

无济于事。显然,该问题是由较新版本的 VirtualBox 中 Host-Only 网络的 IP 限制引起的。一些帖子建议手动编辑 VirtualBox 的networks.conf文件。但我在我的机器上找不到它,也不知道应该在那里更改什么!

PS1。在 Reddit 上提出了后续问题。

Foa*_*oad 57

感谢Reddit 上的这条评论,我能够解决这个问题:

  1. 找到所有带有docker-machine ls
  2. 删除那些你不需要的docker-machine rm -y <machineName>
  3. 查找所有“仅主机以太网适配器”VBoxManage list hostonlyifs
  4. 删除孤立的VBoxManage hostonlyif remove <networkName>
  5. vboxetc目录中创建一个文件夹sudo mkdir
  6. networks.conf在中创建一个文件vbox,例如sudo touch
  7. 将下面的行放在那里
* 0.0.0.0/0::/0
  1. 创建一台新机器docker-machine create -d virtualbox <machineName>
  2. 运行命令eval $(docker-machine env <machineName>)来配置您的 shell

PS1。上述解决方案的一个主要缺点是每次启动 docker 机器时docker-machine start <machineName>都会花费大量时间Waiting for an IP...

  • @fips 欢迎您。我花了四五个晚上才弄清楚这个问题。令人沮丧! (3认同)
  • 您不需要删除整个机器(谢天谢地!)。步骤 3-7 后面的“docker-machine start”对我有用。 (2认同)
  • Docker-machine 已被存档(基本上已弃用)。Docker 不再支持它,我不建议将它用于任何新的用例。https://github.com/docker/machine (2认同)