我通常喜欢在我的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 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