哎呀,好久没写日志了。嘻嘻!根本没空呀!要不是今晚蛋疼的吃了2碗红薯粉导致消化不良想吐吐,我也不至于睡不着在找东西转移注意力…
其实玩docker无非就是想自动化部署啦,或者装个kali-linux黑黑wifi啦..扯远了!下面是正文!
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
$ docker version Client: Version: 1.11.1 API version: 1.23 Go version: go1.5.4 Git commit: 5604cbe Built: Tue Apr 26 23:44:17 2016 OS/Arch: darwin/amd64 Cannot connect to the Docker daemon. Is the docker daemon running on this host?
不能docker pull、docker run 、docker stop等命令。
原因是你没有一个默认的容器。在macOS里,”docker”只是一个客户端(Client)。你没办法用它运行Docker daemon。因为Docker daemon使用了 Linux-specific kernel的一些特性。macOS没有,所以你需要安装docker-machine来创建一个VM解决这个问题。
你输入命令检查默认的VM,它总会提示你没找到默认的。
$ eval "$(docker-machine env default)" Host does not exist: "default"
然后我们开始安装docker-machine吧。
$ brew install docker-machine ;或者 $install -v <(curl https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-amd64) /usr/local/bin/docker-machine
然后你需要创建一个默认的VM(这个时候不要挂VPN,会产生IP问题)。
$docker-machine create --driver virtual box default
此时检查是否安装成功。
都出来了吧。
没问题的话你执行docker ps,就不会再看到跟你说daemon的事了。
但是我的情况比较特殊,ip问题(上面的图片上的一行Error)。
Error setting up host only network on machine start: host-only cidr conflicts with the network address of a host interface
因为docker想使用的IP段跟你的主机所使用的IP段重复了,解决方法就是删除docker镜像,创建的时候使用另一个IP段。通过指定VIRTUALBOX_HOSTONLY_CIDR值的IP。
;先删除刚刚创建的VM $docker-machine rm default ;指定IP后创建 $docker-machine create --driver virtualbox --virtualbox-hostonly-cidr "25.0.1.100/24" default
一般用户到这里就已经成功了。
无奈我RP烂爆了!出现了新的问题,而且还是一大版:
This machine has been allocated an IP address, but Docker Machine could not
reach it successfully.
SSH for the machine should still work, but connecting to exposed ports, such as
the Docker daemon port (usually <ip>:2376), may not work properly.
You may need to add the route manually, or use another related workaround.
This could be due to a VPN, proxy, or host file configuration issue.
You also might want to clear any VirtualBox host only interfaces you are not using.
Checking connection to Docker…
Error creating machine: Error checking the host: Error checking and/or regenerating the certs: There was an error validating certificates for host “25.0.1.100:2376”: dial tcp 25.0.1.100:2376: getsockopt: connection refused
You can attempt to regenerate them using ‘docker-machine regenerate-certs [name]’.
Be advised that this will trigger a Docker daemon restart which will stop running containers.
先打开你的网络设置,看看有没有VPN之类的,禁用或删掉。
然后启动:
$docker-machine --debug regenerate-certs -f default $docker-machine --debug env default ;如果你获得的错误是Connection refused之类的,那你需要先启动docker-machine $docker-machine start $docker-machine -D ssh default
看到这里,小伙伴们明白了么?macOS需要装个docker虚拟机,在这个虚拟机的命令行里使用docker的命令。
参考资料
- docker-machine的材料阅读:https://docs.docker.com/machine/get-started/
- VIRTUALBOX_HOSTONLY_CIDR的相关资料位于 https://docs.docker.com/machine/drivers/virtualbox/#oracle-virtualbox (请在该页面搜索关键字“VIRTUALBOX_HOSTONLY_CIDR”)
发表回复