繁体   English   中英

无法在 MacBook 上启动 Docker 守护程序

[英]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安装dockerdocker-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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM