docker-机器无法在 macOS 上创建机器,VBoxManage 返回 E_ACCESSDENIED 错误
docker-machine unable to create a machine on macOS, VBoxManage returning E_ACCESSDENIED error
我使用 HomeBrew 安装了 docker
、docker-machine
和 virtualbox
:
Docker version 20.10.11, build dea9396e18
docker-machine version 0.16.2, build bd45ab1
VBoxManage version 6.1.30r148432
当我尝试创建一台新机器时
docker-machine create -d virtualbox default
我收到以下错误:
Running pre-create checks...
Creating machine...
(default) Copying /Users/foobar/.docker/machine/cache/boot2docker.iso to /Users/foobar/.docker/machine/machines/default/boot2docker.iso...
(default) Creating VirtualBox VM...
(default) Creating SSH key...
(default) Starting the VM...
(default) Check network to re-create if needed...
(default) Found a new host-only adapter: "vboxnet0"
Error creating machine: Error in driver during machine creation: Error setting up host only network on machine start: /usr/local/bin/VBoxManage hostonlyif ipconfig vboxnet0 --ip 192.168.99.1 --netmask 255.255.255.0 failed:
VBoxManage: error: Code E_ACCESSDENIED (0x80070005) - Access denied (extended info not available)
VBoxManage: error: Context: "EnableStaticIPConfig(Bstr(pszIp).raw(), Bstr(pszNetmask).raw())" at line 242 of file VBoxManageHostonly.cpp
我尝试了很多东西
- 重新安装我所有的包
- 运行上面的命令在
sudo
- 按照指示使用
kextload
here“启用内核扩展”
- 根据建议 here 和
docker-machine ls
检查是否有任何过去的孤立机器
无济于事。显然,该问题是由较新版本的 VirtualBox 中 Host-Only 网络的 IP 限制引起的。 Some posts 建议手动编辑 VirtualBox 的 networks.conf
文件。但是我在我的机器上找不到它,也不知道我应该在那里改变什么!
P.S.1. 问了一个后续问题 here on Reddit.
感谢 Reddit 上的 this comment,我得以解决问题:
- 找到所有
docker-machine ls
的机器
- 使用
docker-machine rm -y <machineName>
删除不需要的
- 找到所有具有
VBoxManage list hostonlyifs
的“仅主机以太网适配器”
- 删除带有
VBoxManage hostonlyif remove <networkName>
的孤儿
- 在
etc
目录中创建一个 vbox
文件夹 sudo mkdir
- 在
vbox
文件夹中创建文件 networks.conf
,例如 sudo touch
- 将下面的行放在那里
* 0.0.0.0/0 ::/0
- 使用
docker-machine create -d virtualbox <machineName>
创建新机器
- 运行命令
eval $(docker-machine env <machineName>)
配置你的shell
P.S.1. 上述解决方案的一个主要缺点是每次启动 docker 机器时都使用 docker-machine start <machineName>
它在 Waiting for an IP...
上花费大量时间
我使用 HomeBrew 安装了 docker
、docker-machine
和 virtualbox
:
Docker version 20.10.11, build dea9396e18 docker-machine version 0.16.2, build bd45ab1 VBoxManage version 6.1.30r148432
当我尝试创建一台新机器时
docker-machine create -d virtualbox default
我收到以下错误:
Running pre-create checks... Creating machine... (default) Copying /Users/foobar/.docker/machine/cache/boot2docker.iso to /Users/foobar/.docker/machine/machines/default/boot2docker.iso... (default) Creating VirtualBox VM... (default) Creating SSH key... (default) Starting the VM... (default) Check network to re-create if needed... (default) Found a new host-only adapter: "vboxnet0" Error creating machine: Error in driver during machine creation: Error setting up host only network on machine start: /usr/local/bin/VBoxManage hostonlyif ipconfig vboxnet0 --ip 192.168.99.1 --netmask 255.255.255.0 failed: VBoxManage: error: Code E_ACCESSDENIED (0x80070005) - Access denied (extended info not available) VBoxManage: error: Context: "EnableStaticIPConfig(Bstr(pszIp).raw(), Bstr(pszNetmask).raw())" at line 242 of file VBoxManageHostonly.cpp
我尝试了很多东西
- 重新安装我所有的包
- 运行上面的命令在
sudo
- 按照指示使用
kextload
here“启用内核扩展” - 根据建议 here 和
docker-machine ls
检查是否有任何过去的孤立机器
无济于事。显然,该问题是由较新版本的 VirtualBox 中 Host-Only 网络的 IP 限制引起的。 Some posts 建议手动编辑 VirtualBox 的 networks.conf
文件。但是我在我的机器上找不到它,也不知道我应该在那里改变什么!
P.S.1. 问了一个后续问题 here on Reddit.
感谢 Reddit 上的 this comment,我得以解决问题:
- 找到所有
docker-machine ls
的机器
- 使用
docker-machine rm -y <machineName>
删除不需要的
- 找到所有具有
VBoxManage list hostonlyifs
的“仅主机以太网适配器”
- 删除带有
VBoxManage hostonlyif remove <networkName>
的孤儿
- 在
etc
目录中创建一个vbox
文件夹sudo mkdir
- 在
vbox
文件夹中创建文件networks.conf
,例如sudo touch
- 将下面的行放在那里
* 0.0.0.0/0 ::/0
- 使用
docker-machine create -d virtualbox <machineName>
创建新机器
- 运行命令
eval $(docker-machine env <machineName>)
配置你的shell
P.S.1. 上述解决方案的一个主要缺点是每次启动 docker 机器时都使用 docker-machine start <machineName>
它在 Waiting for an IP...