无法连接到 macOS 上的 Docker 守护进程
Cannot connect to the Docker daemon on macOS
我通常更喜欢使用 brew
在 OSX 上管理我的应用程序
我可以安装 docker、docker-compose 和 docker-machine
docker --version
Docker version 17.05.0-ce, build 89658be
docker-compose --version
docker-compose version 1.13.0, build unknown
docker-machine --version
docker-machine version 0.11.0, build 5b27455
我没有下载 运行 'Docker for Mac' app.
但是当我尝试 运行
> docker run -d -p 80:80 --name webserver nginx
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
See 'docker run --help'.
我已经检查了袜子文件
ls -lah /var/run/docker.sock /var/tmp/docker.sock
ls: /var/run/docker.sock: No such file or directory
ls: /var/tmp/docker.sock: No such file or directory
我也试过这个提议的解决方案:Mac OS X sudo docker Cannot connect to the Docker daemon. Is the docker daemon running on this host?
但我收到此错误消息:
$ eval $(docker-machine env default)
Host does not exist: "default"
是否可以通过命令行工具为 运行 获取 docker 服务?
试试这个来创建默认值。
docker-machine create default
在 OSX 确保您在发布
之前启动了 Docker 应用程序
docker ps
或 docker build
... 等等 ... 是的,发布
似乎很奇怪并且有点误导
docker --version
给出版本,即使 docker 守护程序不是 运行 ... 其他版本的 cmd 也是如此 ... 我只是遇到了完全相同的症状 ... [= 上的这种行为22=] 不同于 linux
在受支持的 Mac、运行 上:
brew install --cask docker
然后启动 Docker 应用程序。点击下一步。它将要求特权访问。确认。鲸鱼图标应该出现在顶部栏中。单击它并等待“Docker is 运行ning”出现。
您现在应该可以 运行 docker
命令:
docker ps
因为docker是系统级的包,不能用brew install
安装,必须用--cask
代替。
注意:此解决方案仅适用于 CPU 支持虚拟化的 Macs,可能不包括旧的 Macs。
Edit 2022 - 在评论部分提到 Docker Desktop 的许可发生了变化。请考虑以下备选方案,并查看评论了解详情。
我遇到了同样的问题。 Docker 运行ning 但无法通过 CLI 访问它。
对我来说,问题是通过执行 "Docker Quickstart Terminal.app" 解决的。它位于“/Applications/Docker/”文件夹中。只要我在终端应用程序的这个实例中工作,Docker 就可以完美运行。如果需要第二个 window,我必须再次 运行 "Quickstart" 应用程序。
我有一个 Docker 用于 Mac 安装。因此我不确定我的解决方案是否适用于 Homebrew 安装。
"Docker Quickstart Terminal" 应用程序似乎本质上是一些启动终端应用程序的 applescripts 和一个初始化所有必要环境变量的 bash 启动脚本。
希望这对其他人有帮助!
我遇到了同样的问题,我通过以下步骤解决了它:
docker-machine restart
退出终端(或 iTerm2 等)并重新启动
eval $(docker-machine env default)
我也回答了here
在 macOS 上 docker
二进制文件只是一个客户端,你不能将它用于 运行 docker 守护进程,因为 Docker 守护进程使用Linux-specific 内核特性,因此你不能 运行 Docker 在 OS X 中原生。所以你必须安装 docker-machine
才能创建 VM 并附加到它。
在 mac 上安装 docker-machine
OS
如果您还没有 docker-machine
命令,请使用以下方法之一安装它:
使用 Brew 命令:brew install docker-machine docker
.
手动从Releases page:
$ curl -L https://github.com/docker/machine/releases/download/v0.16.1/docker-machine-`uname -s`-`uname -m` >/usr/local/bin/docker-machine
$ chmod +x /usr/local/bin/docker-machine
参见:Get started with Docker for Mac。
安装虚拟机
docker-machine
依赖于正在安装的 VirtualBox,如果不是这样,将会失败。如果你已经有VirtualBox,你可以跳过这一步。
- 使用自制软件:
brew install --cask virtualbox
- 手动使用 Virtualbox.org
上的版本
您需要在 OS X 安全面板中主动接受加载 Virtualbox 内核扩展,然后继续 重启机器 以确保下一个命令不会失败Error: VBoxNetAdpCtl: Error while adding new interface
在 mac 上配置 docker-machine
OS
创建一台 default
机器(如果没有,请参阅:docker-machine ls
):
docker-machine create --driver virtualbox default
然后 set-up Docker 客户端的环境:
eval "$(docker-machine env default)"
然后 double-check 通过列出容器:
docker ps
参见:Get started with Docker Machine and a local VM。
相关:
- 对于Linux,参见:Docker can't connect to docker daemon
- 对于Windows,参见:Docker warning: failed to get default registry endpoint from daemon
我首先尝试 docker 和 docker-compose 通过自制软件,但它有这里列出的问题。我必须从 https://docs.docker.com/docker-for-mac/install/ 安装 docker 的官方安装,然后一切都按预期工作。
我有docker最新的,docker说是运行,诊断很好。我需要取消设置一些遗留环境变量(感谢 https://docs.docker.com/docker-for-mac/troubleshoot/#workarounds-for-common-problems )
unset DOCKER_HOST
unset DOCKER_CERT_PATH
unset DOCKER_TLS_VERIFY
我只需要 运行 聚焦搜索并执行 brew cask install
创建的 /Applications 文件夹下的 Docker 应用程序。一旦达到 运行,它就会要求完成安装。然后我能够 运行 docker ps
我有 Mac OS 并且我打开了 Launchpad
和 select docker
应用程序。
从 reset
选项卡点击 restart
。
安装minikube,加入黑暗面
https://kubernetes.io/docs/tasks/tools/install-minikube/
$ bash --version
GNU bash, version 5.0.3(1)-release (x86_64-apple-darwin18.2.0)
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
eval $(minikube docker-env)
$ docker run --rm -v ${PWD}:/local swaggerapi/swagger-codegen-cli generate -i /local/swagger.json -l python -o /local/test/
[main] INFO io.swagger.parser.Swagger20Parser - reading from /local/swagger.json
[main] WARN io.swagger.codegen.DefaultGenerator - 'host' not defined in the spec. Default to 'localhost'.
在装有 bash v5 的 Macbook Pro 2018 上运行良好。这些天我不需要安装所有其他 docker 废话。 minikube自带的虚拟机和安装脚本可以替代docker机器,我的经验
我在 mac 上遇到了类似的问题,我发现 docker 在我的 machine 中不是 运行,我只是去申请了调用 whale 然后它起作用了。
您应该执行安装脚本 docker 并从命令行启动它:
brew install --cask docker
sudo -H pip3 install --upgrade pip3
open -a Docker
docker-compose ...
在那之后 docker-compose
应该工作
这个问题:
$ brew install docker docker-machine
$ docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
这显然意味着执行以下操作:
$ docker-machine create default # default driver is apparently vbox:
Running pre-create checks...
Error with pre-create check: "VBoxManage not found. Make sure VirtualBox is installed and VBoxManage is in the path"
$ brew cask install virtualbox
…
$ docker-machine create default
# works this time
$ docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
$ eval "$(docker-machine env default)"
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
终于成功了。
如果不想安装virtual box,可以使用“xhyve”驱动。
您还可以安装“docker 应用程序”(然后 运行 它),这显然可以做到这一点,因此您不必 运行 上面的某些内容。 brew cask install docker
然后 运行 应用程序,请参阅其他答案。但显然本身没有必要。
尝试了以下并且现在工作正常
$ docker-machine create default
(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"
(default) Waiting for an IP...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with boot2docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!
然后
$ docker-machine env default
终于
$ eval $(docker-machine env default)
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
我运行 brew install docker-machine;那么问题就解决了。最新的 docker 版本没有包含 docker-机器。
安装 docker-machine
足以让我解决问题。
这对我有用:
open --background -a Docker
需要几秒钟才能连接到 docker。
我在 Mac OS 大苏尔
Docker 旨在 运行 Linux。但是,它可以 运行 在 macOS 上的虚拟机中。这样做有点麻烦,这也许就是 Docker Desktop 首先存在的原因。但这并不意味着您不能在 Mac.
上从命令行舒适地使用 Docker
需要考虑的一些选项:
- 您可以使用 lima 并将
alias doocker='lima nerdctl'
添加到您的 bash 个人资料中。
- 您可以在您的计算机上安装 Linux 虚拟机并使用它(不推荐)。
- Dual-boot Linux Mac。现在甚至支持带有T2和M1芯片的机器。
使用更新版本的 VirtualBox (6.1.32r149290
),命令 docker-machine create --driver virtualbox default
不起作用,虚拟机的 auto-generated IP 有错误,解释在这里.
此命令帮助我解决了问题:docker-machine create --driver virtualbox --virtualbox-hostonly-cidr "192.168.59.3/24" default
。
刚打开 Docker 桌面对我有用。
我通常更喜欢使用 brew
在 OSX 上管理我的应用程序我可以安装 docker、docker-compose 和 docker-machine
docker --version
Docker version 17.05.0-ce, build 89658be
docker-compose --version
docker-compose version 1.13.0, build unknown
docker-machine --version
docker-machine version 0.11.0, build 5b27455
我没有下载 运行 'Docker for Mac' app.
但是当我尝试 运行
> docker run -d -p 80:80 --name webserver nginx
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
See 'docker run --help'.
我已经检查了袜子文件
ls -lah /var/run/docker.sock /var/tmp/docker.sock
ls: /var/run/docker.sock: No such file or directory
ls: /var/tmp/docker.sock: No such file or directory
我也试过这个提议的解决方案:Mac OS X sudo docker Cannot connect to the Docker daemon. Is the docker daemon running on this host?
但我收到此错误消息:
$ eval $(docker-machine env default)
Host does not exist: "default"
是否可以通过命令行工具为 运行 获取 docker 服务?
试试这个来创建默认值。
docker-machine create default
在 OSX 确保您在发布
之前启动了 Docker 应用程序docker ps
或 docker build
... 等等 ... 是的,发布
docker --version
给出版本,即使 docker 守护程序不是 运行 ... 其他版本的 cmd 也是如此 ... 我只是遇到了完全相同的症状 ... [= 上的这种行为22=] 不同于 linux
在受支持的 Mac、运行 上:
brew install --cask docker
然后启动 Docker 应用程序。点击下一步。它将要求特权访问。确认。鲸鱼图标应该出现在顶部栏中。单击它并等待“Docker is 运行ning”出现。
您现在应该可以 运行 docker
命令:
docker ps
因为docker是系统级的包,不能用brew install
安装,必须用--cask
代替。
注意:此解决方案仅适用于 CPU 支持虚拟化的 Macs,可能不包括旧的 Macs。
Edit 2022 - 在评论部分提到 Docker Desktop 的许可发生了变化。请考虑以下备选方案,并查看评论了解详情。
我遇到了同样的问题。 Docker 运行ning 但无法通过 CLI 访问它。
对我来说,问题是通过执行 "Docker Quickstart Terminal.app" 解决的。它位于“/Applications/Docker/”文件夹中。只要我在终端应用程序的这个实例中工作,Docker 就可以完美运行。如果需要第二个 window,我必须再次 运行 "Quickstart" 应用程序。
我有一个 Docker 用于 Mac 安装。因此我不确定我的解决方案是否适用于 Homebrew 安装。
"Docker Quickstart Terminal" 应用程序似乎本质上是一些启动终端应用程序的 applescripts 和一个初始化所有必要环境变量的 bash 启动脚本。
希望这对其他人有帮助!
我遇到了同样的问题,我通过以下步骤解决了它:
docker-machine restart
退出终端(或 iTerm2 等)并重新启动
eval $(docker-machine env default)
我也回答了here
在 macOS 上 docker
二进制文件只是一个客户端,你不能将它用于 运行 docker 守护进程,因为 Docker 守护进程使用Linux-specific 内核特性,因此你不能 运行 Docker 在 OS X 中原生。所以你必须安装 docker-machine
才能创建 VM 并附加到它。
在 mac 上安装 docker-machine
OS
如果您还没有 docker-machine
命令,请使用以下方法之一安装它:
使用 Brew 命令:
brew install docker-machine docker
.手动从Releases page:
$ curl -L https://github.com/docker/machine/releases/download/v0.16.1/docker-machine-`uname -s`-`uname -m` >/usr/local/bin/docker-machine $ chmod +x /usr/local/bin/docker-machine
参见:Get started with Docker for Mac。
安装虚拟机
docker-machine
依赖于正在安装的 VirtualBox,如果不是这样,将会失败。如果你已经有VirtualBox,你可以跳过这一步。
- 使用自制软件:
brew install --cask virtualbox
- 手动使用 Virtualbox.org 上的版本
您需要在 OS X 安全面板中主动接受加载 Virtualbox 内核扩展,然后继续 重启机器 以确保下一个命令不会失败Error: VBoxNetAdpCtl: Error while adding new interface
在 mac 上配置 docker-machine
OS
创建一台 default
机器(如果没有,请参阅:docker-machine ls
):
docker-machine create --driver virtualbox default
然后 set-up Docker 客户端的环境:
eval "$(docker-machine env default)"
然后 double-check 通过列出容器:
docker ps
参见:Get started with Docker Machine and a local VM。
相关:
- 对于Linux,参见:Docker can't connect to docker daemon
- 对于Windows,参见:Docker warning: failed to get default registry endpoint from daemon
我首先尝试 docker 和 docker-compose 通过自制软件,但它有这里列出的问题。我必须从 https://docs.docker.com/docker-for-mac/install/ 安装 docker 的官方安装,然后一切都按预期工作。
我有docker最新的,docker说是运行,诊断很好。我需要取消设置一些遗留环境变量(感谢 https://docs.docker.com/docker-for-mac/troubleshoot/#workarounds-for-common-problems )
unset DOCKER_HOST
unset DOCKER_CERT_PATH
unset DOCKER_TLS_VERIFY
我只需要 运行 聚焦搜索并执行 brew cask install
创建的 /Applications 文件夹下的 Docker 应用程序。一旦达到 运行,它就会要求完成安装。然后我能够 运行 docker ps
我有 Mac OS 并且我打开了 Launchpad
和 select docker
应用程序。
从 reset
选项卡点击 restart
。
安装minikube,加入黑暗面
https://kubernetes.io/docs/tasks/tools/install-minikube/
$ bash --version
GNU bash, version 5.0.3(1)-release (x86_64-apple-darwin18.2.0)
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
eval $(minikube docker-env)
$ docker run --rm -v ${PWD}:/local swaggerapi/swagger-codegen-cli generate -i /local/swagger.json -l python -o /local/test/
[main] INFO io.swagger.parser.Swagger20Parser - reading from /local/swagger.json
[main] WARN io.swagger.codegen.DefaultGenerator - 'host' not defined in the spec. Default to 'localhost'.
在装有 bash v5 的 Macbook Pro 2018 上运行良好。这些天我不需要安装所有其他 docker 废话。 minikube自带的虚拟机和安装脚本可以替代docker机器,我的经验
我在 mac 上遇到了类似的问题,我发现 docker 在我的 machine 中不是 运行,我只是去申请了调用 whale 然后它起作用了。
您应该执行安装脚本 docker 并从命令行启动它:
brew install --cask docker
sudo -H pip3 install --upgrade pip3
open -a Docker
docker-compose ...
在那之后 docker-compose
应该工作
这个问题:
$ brew install docker docker-machine
$ docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
这显然意味着执行以下操作:
$ docker-machine create default # default driver is apparently vbox:
Running pre-create checks...
Error with pre-create check: "VBoxManage not found. Make sure VirtualBox is installed and VBoxManage is in the path"
$ brew cask install virtualbox
…
$ docker-machine create default
# works this time
$ docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
$ eval "$(docker-machine env default)"
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
终于成功了。
如果不想安装virtual box,可以使用“xhyve”驱动。
您还可以安装“docker 应用程序”(然后 运行 它),这显然可以做到这一点,因此您不必 运行 上面的某些内容。 brew cask install docker
然后 运行 应用程序,请参阅其他答案。但显然本身没有必要。
尝试了以下并且现在工作正常
$ docker-machine create default
(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"
(default) Waiting for an IP...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with boot2docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!
然后
$ docker-machine env default
终于
$ eval $(docker-machine env default)
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
我运行 brew install docker-machine;那么问题就解决了。最新的 docker 版本没有包含 docker-机器。
安装 docker-machine
足以让我解决问题。
这对我有用:
open --background -a Docker
需要几秒钟才能连接到 docker。
我在 Mac OS 大苏尔
Docker 旨在 运行 Linux。但是,它可以 运行 在 macOS 上的虚拟机中。这样做有点麻烦,这也许就是 Docker Desktop 首先存在的原因。但这并不意味着您不能在 Mac.
上从命令行舒适地使用 Docker需要考虑的一些选项:
- 您可以使用 lima 并将
alias doocker='lima nerdctl'
添加到您的 bash 个人资料中。 - 您可以在您的计算机上安装 Linux 虚拟机并使用它(不推荐)。
- Dual-boot Linux Mac。现在甚至支持带有T2和M1芯片的机器。
使用更新版本的 VirtualBox (6.1.32r149290
),命令 docker-machine create --driver virtualbox default
不起作用,虚拟机的 auto-generated IP 有错误,解释在这里.
此命令帮助我解决了问题:docker-machine create --driver virtualbox --virtualbox-hostonly-cidr "192.168.59.3/24" default
。
刚打开 Docker 桌面对我有用。