【问题标题】:Cannot start Docker daemon at MacBook无法在 MacBook 上启动 Docker 守护程序
【发布时间】:2021-11-02 03:25:22
【问题描述】:

我运行了命令,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

【问题讨论】:

  • 你试过systemctl restart docker吗?
  • 这是 MacBook。没有 systemctl 命令。
  • Is the docker daemon running?
  • @Michelle 好的,然后是service docker restart
  • @NikolaiShevchenko docker 无法在 OS X 中本地运行,因为它需要 Linux 内核,因此它永远不会在 Mac 中作为服务启动。此外,Mac 使用launchd 来控制服务,因此即使 Docker 将成为 Mac 中的服务,该命令也只会失败。在任何情况下,如果她使用 Docker for Mac(我的回答末尾提到的应用程序),她可以使用 osascript -e 'quit app "Docker"' 优雅退出并使用 open -a Docker 重新启动它。

标签: docker docker-machine


【解决方案1】:

同样的问题。我发现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

【讨论】:

    【解决方案2】:

    您将 docker-machine 作为服务启动,但不是任何 Docker 套接字。

    一旦你安装了dockerdocker-machinebrew,你实际上需要在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-在你的 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 或类似的,它仍然会抱怨套接字没有运行。原因是 Docker CLI 默认查找本地守护进程,因此我们必须明确告诉 CLI 我们要使用不同的守护进程。

    为此,请运行以下命令,该命令将告诉您的 CLI 我们实际要使用哪台机器:

    docker-machine env default
    

    下次运行 docker ps 或任何其他 Docker 命令时,它将在创建的 default 机器上运行和运行。

    PD:记得在不使用机器时停止机器!为此,您只需使用以下命令:

    docker-machine stop default
    

    之前的所有工作听起来都像很多工作,而您现在只想使用 Docker 而不做任何进一步的工作吗?

    将其安装为应用程序,然后忘记docker-machine

    brew cask install docker
    

    就是这样。

    【讨论】:

    • 运行命令时出现错误,docker-machine create --driver virtualbox default 创建机器时出错:创建机器时驱动程序出错:在机器启动时设置仅主机网络时出错:/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())" 在文件 VBoxManageHostonly.cpp 的第 242 行
    • 从错误代码Code E_ACCESSDENIED (0x80070005) 我猜这是与权限有关的问题。您是否使用管理员帐户安装了docker-machine 和/或virtualbox?如果您尝试创建具有提升权限的机器,它会说明什么?
    • 我不明白使用管理员帐户安装 docker-machine 和 virtualbox。我以我的 ID 登录 MacBook,打开一个 shell 终端,使用 brew install 命令。它提示密码,我必须输入密码。我不明白“创建具有提升权限的机器”。如何“创建提升的权限”?
    • 如何“创建具有提升权限的机器”?
    • 我的意思是,如果您对任何命令使用sudo。 “创建具有提升权限的机器”我的意思是做sudo docker-machine create --driver virtualbox default。无论如何,如果您不知道如何处理 macOS 或 Apple Silicon 上的权限,也许您应该卸载 docker-machinevirtualbox,然后将 Docker 安装为带有 brew cask install docker 的应用程序,它会为您省去很多麻烦它将包括所有需要的依赖项。
    猜你喜欢
    • 2016-10-26
    • 2015-03-08
    • 2020-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多