win10系统安装的ubuntu 的子系统,安装上docker后运行 service docker start ,显示OK,然后docker ps查看报错:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
wtf? 查看服务状态
# service docker status
* Docker is not running
竟然没有运行成功,后来各种折腾还是不行,网上查了相关资料后基本认定我这个子系统是运行不起来了,原因是目前 wsl 是不支持 docker 的守护进程的
于是乎,想要方便的在 wsl Ubuntu 上使用 docker 的想法近乎破灭。想要使用还是有方法的,可以参考这篇博客 在Linux的Windows子系统上(WSL)使用Docker(Ubuntu)。
将子系统作为docker client端连接远程docker damaen服务
我们知道docker是cs架构的,即分为client端和server端,本地都是通过socket协议通讯的,如果本地client要连接远程的docker服务,则需要在client上导出以下环境变量
export DOCKER_HOST=tcp://<your docker server ip>:2375
2375是默认的连接端口,当然你可以在服务器端指定其他端口。
(前提:远程docker server开启了tcp连接,即在 /lib/systemd/system/docker.service 中的ExecStart=/usr/bin/dockerd 一句后面追加tcp访问协议,如下:
ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375
这样server才能接受来自其他机器的docker命令)
执行docker ps, ok没问题,打印出了远端host的docker容器信息。
这样我的子系统就变成了docker client端。
over!