无法连接到 macOS 上的 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”应用程序。

但是,当我尝试运行时

> 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。 docker 守护进程是否在此主机上运行?

但我收到了这个错误信息:

 $ eval $(docker-machine env default)
Host does not exist: "default"

是否可以通过命令行工具运行 docker 服务?

原文由 Anthony Kong 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.8k
2 个回答

在受支持的 Mac 上,运行:

 brew install --cask docker

然后启动 Docker 应用程序。点击下一步。它将要求特权访问。确认。鲸鱼图标应出现在顶部栏中。单击它并等待“Docker 正在运行”出现。

您现在应该可以运行 docker 命令:

 docker ps

因为 docker 是系统级包,所以不能使用 brew install 安装,必须使用 --cask 代替。

注意:此解决方案仅适用于 CPU 支持虚拟化的 Mac,可能不包括旧 Mac。

2022 年编辑 - 评论部分提到 Docker Desktop 的许可发生了变化。请考虑下面的替代方案,并查看评论以获取详细信息。

原文由 friederbluemle 发布,翻译遵循 CC BY-SA 4.0 许可协议

在 macOS 上, docker 二进制文件只是一个客户端,您不能使用它来运行 docker 守护程序,因为 Docker 守护程序使用 Linux 特定的内核功能,因此您不能在 OS X 中本地运行 Docker。所以您必须安装 docker-machine 才能创建 VM 并附加到它。

在 macOS 上安装 docker-machine

如果您还没有 docker-machine 命令,请使用以下方法之一安装:

  • 使用 Brew 命令: brew install docker-machine docker

  • 发布页面 手动:

   $ 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

请参阅: Docker for Mac 入门

安装 Virtualbox

docker-machine 依赖于安装的 VirtualBox,如果不是这种情况,将会失败。如果您已经拥有 VirtualBox,则可以跳过此步骤。

  • 使用自制软件: brew install --cask virtualbox
  • 手动使用 Virtualbox.org 上的版本

您将需要在 OS X 安全面板中主动接受加载 Virtualbox 内核扩展,然后继续 重新启动机器 以使下一个命令不会失败,并显示 Error: VBoxNetAdpCtl: Error while adding new interface

在macOS上配置 docker-machine

创建 default 机器(如果没有,请参见: docker-machine ls ):

 docker-machine create --driver virtualbox default

然后为 Docker 客户端设置环境:

 eval "$(docker-machine env default)"

然后通过列出容器进行仔细检查:

 docker ps

请参阅: Docker Machine 和本地 VM 入门


有关的:

原文由 kenorb 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题