[英]Cannot start Docker daemon at MacBook
我运行了命令, brew services start docker-machine
。
它说,“成功启动docker-machine
”。 但是,当我运行docker ps -a
时出现错误。 请帮忙。
brew services start docker-machine
==> Tapping homebrew/services
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-services'...
remote: Enumerating objects: 1488, done.
remote: Counting objects: 100% (367/367), done.
remote: Compressing objects: 100% (266/266), done.
remote: Total 1488 (delta 148), reused 267 (delta 93), pack-reused 1121
Receiving objects: 100% (1488/1488), 437.97 KiB | 3.04 MiB/s, done.
Resolving deltas: 100% (624/624), done.
Tapped 1 command (38 files, 540.5KB).
==> Successfully started `docker-machine` (label: homebrew.mxcl.docker-machine)
% docker ps -a
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
docker-machine create --driver virtualbox default
给我以下错误:
docker-machine create --driver virtualbox default
Running pre-create checks...
(default) Image cache directory does not exist, creating it at /Users/perryluo/.docker/machine/cache...
(default) No default Boot2Docker ISO found locally, downloading the latest release...
(default) Latest release for github.com/boot2docker/boot2docker is v19.03.12
(default) Downloading /Users/perryluo/.docker/machine/cache/boot2docker.iso from https://github.com/boot2docker/boot2docker/releases/download/v19.03.12/boot2docker.iso...
(default) 0%....10%....20%....30%....40%....50%....60%....70%....80%....90%....100%
Creating machine...
(default) Copying /Users/perryluo/.docker/machine/cache/boot2docker.iso to /Users/perryluo/.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 docker-machine create --driver virtualbox default
Docker machine "default" already exists
$ docker-machine stop default
Stopping "default"...
Machine "default" is already stopped.
$ docker-machine start default
Starting "default"...
(default) Check network to re-create if needed...
(default) Found a new host-only adapter: "vboxnet2"
Error setting up host only network on machine start: /usr/local/bin/VBoxManage hostonlyif ipconfig vboxnet2 --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
$ docker-machine env default
Error checking TLS connection: Host is not running
这里同样的问题。 我发现 docker docker-machine
正在尝试将其HostOnly
network
移动到192.168.99.1/24
。 这超出了 VirtualBox 在 MacOS 上允许的范围。
请参阅https://www.virtualbox.org/manual/ch06.html#network_hostonly :
在 Linux、Mac OS X 和 Solaris 上,Oracle VM VirtualBox 仅允许将
192.168.56.0/21
范围内的 IP 地址分配给仅主机适配器。
该范围对应于192.168.56.1
- 192.168.63.255
。
对我有用的解决方案是:
docker-machine rm default
docker-machine create -d virtualbox --virtualbox-hostonly-cidr "192.168.63.1/24" default
您将docker-machine
作为服务启动,但不是任何 Docker 套接字。
使用brew
安装docker
和docker-machine
后,您实际上需要在 Linux 内核上运行 Docker, docker
二进制文件只是客户端,您无法在 OS X 中本地运行 Docker。
因此,首先,您需要使用 VirtualBox 创建一台机器,您将在其中实际运行 Docker。 为此,您应该这样做:
docker-machine create --driver virtualbox default
如果您收到如下错误:
Running pre-create checks...
Error with pre-create check: "VBoxManage not found. Make sure VirtualBox is installed and VBoxManage is in the path"
这意味着你没有安装 Virtual Box,所以你需要cask
-install 它在你的 MacBook 上:
brew install virtualbox --cask
一旦你已经安装了 VirtualBox,就可以使用上述命令创建一台机器了。 您应该有如下输出:
docker-machine create --driver virtualbox default
[...]
Docker is up and running!
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env default
但是,如果您运行docker ps
或类似的东西,它仍然会抱怨 Socket 没有运行。 原因是 Docker CLI 默认查找本地守护进程,因此我们必须明确告诉 CLI 我们要使用不同的守护进程。
为此,请运行以下命令,该命令将告诉您的 CLI 我们实际要使用哪台机器:
docker-machine env default
下次您运行docker ps
或任何其他 Docker 命令时,它将在创建的default
机器上运行和运行。
PD:当你不使用机器时,记得停止机器! 为此,您只需使用以下命令:
docker-machine stop default
之前的所有工作听起来都像很多工作,而您现在只想使用 Docker 而不做任何进一步的工作吗?
将其安装为应用程序并忘记docker-machine
:
brew cask install docker
而已。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.