我通常喜欢在我的OSX上用brew管理我的应用程序

我能够安装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无法连接到docker守护进程。这个主机上是否运行docker守护进程?

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

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

有可能通过命令行工具来运行docker服务吗?


当前回答

安装Docker桌面表单

https://www.docker.com/products/docker-desktop/

转到右上角的设置

转到一般 登录时勾选“开始Docker桌面”

其他回答

在受支持的Mac上运行:

brew install --cask docker

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

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

docker ps

因为docker是一个系统级包,你不能使用brew install安装它,而必须使用——cask。

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

编辑2022 -评论区提到Docker Desktop的许可有了变化。请考虑以下替代方案,并查看评论以了解详细信息。

这对我来说很管用:

open --background -a Docker

需要几秒钟才能连接到docker。

我用的是Mac OS大苏尔。

如果你像我一样在Docker Desktop 4.13.0之后来到这里,那是因为Docker取消了/var/run/ Docker。袜子符号链接默认行为!点击这里查看发布说明。

快速修复:复制下面“永久解决方案”下的命令

这个问题

我正在经历docker ps(和其他docker客户端命令)工作,但其他与docker交互的库(如supabase CLI)导致:

$ supabase start
Error: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

解决方案

现在,你必须手动做一些事情,以便让你的工具找到真正的docker套接字文件,默认情况下是~/Library/Containers/com.docker.docker/Data/docker.raw.sock。

永久解决方案:手动符号链接

这是一个永久性的解决方案,可以“撤销”这个临时修复。

sudo ln -s ~/Library/Containers/com.docker.docker/Data/docker.raw.sock /var/run/docker.sock
DOCKER_HOST=unix:///var/run/docker.sock docker ps # test that it works using linked socket file

临时解决方案:使用DOCKER_HOST

这将临时使您的命令使用新的套接字文件

DOCKER_HOST=unix:///Users/$(whoami)/Library/Containers/com.docker.docker/Data/docker.raw.sock docker ps

(用任何你想要的命令替换docker ps,比如supabase start)

你也可以让它在你当前的终端会话中工作,或者始终粘贴到你的.zshrc中,使用:

export DOCKER_HOST=unix:///Users/$(whoami)/Library/Containers/com.docker.docker/Data/docker.raw.sock

尝试以下,它的工作现在很好

$ 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!

Then

$ docker-machine env default

最后

$ eval $(docker-machine env default)
$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

在更新版本的VirtualBox (6.1.32r149290)中,命令docker-machine create——driver VirtualBox默认不工作,有一个自动生成虚拟机IP的错误,解释在这里https://stackoverflow.com/a/69745931/2917630。

docker-machine create——driver virtualbox——virtualbox-host -cidr "192.168.59.3/24" default。