在WSL中成功安装Docker之后,如果我运行标准Docker命令,则会出现连接错误。在所有示例中,使用sudo或不使用sudo运行都会产生相同的结果。
root@SUR002731165154:~# sudo docker info Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? root@SUR002731165154:~# sudo docker version Client: Version: 1.13.1 API version: 1.26 Go version: go1.7.5 Git commit: 092cba3 Built: Wed Feb 8 06:42:29 2017 OS/Arch: linux/amd64 Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
但是,如果我在命令中添加-H localhost:2375,那么我可以运行Docker没问题。Docker是连接到我的本地主机Windows 10计算机还是在WSL上本地运行,还是两者兼而有之?
root@SUR002731165154:~# docker -H localhost:2375 version Client: Version: 1.13.1 API version: 1.26 Go version: go1.7.5 Git commit: 092cba3 Built: Wed Feb 8 06:42:29 2017 OS/Arch: linux/amd64 Server: Version: 1.13.1 API version: 1.26 (minimum version 1.12) Go version: go1.7.5 Git commit: 092cba3 Built: Wed Feb 8 08:47:51 2017 OS/Arch: linux/amd64 Experimental: true root@SUR002731165154:~# docker -H localhost:2375 info Containers: 11 Running: 0 Paused: 0 Stopped: 11 Images: 8 Server Version: 1.13.1 Storage Driver: overlay2 Backing Filesystem: extfs Supports d_type: true Native Overlay Diff: true Logging Driver: json-file Cgroup Driver: cgroupfs Plugins: Volume: local Network: bridge host ipvlan macvlan null overlay Swarm: inactive Runtimes: runc Default Runtime: runc Init Binary: docker-init containerd version: aa8187dbd3b7ad67d8e5e3a15115d3eef43a7ed1 runc version: 9df8b306d01f59d3a8029be411de015b7304dd8f init version: 949e6fa Security Options: seccomp Profile: default Kernel Version: 4.9.8-moby Operating System: Alpine Linux v3.5 OSType: linux Architecture: x86_64 CPUs: 2 Total Memory: 1.934 GiB Name: moby ID: 4LYM:R5T5:6CPZ:Z2KC:YQ4R:NGN4:V6SR:DF7E:YPYO:7FHY:EQW5:2T7W Docker Root Dir: /var/lib/docker Debug Mode (client): false Debug Mode (server): true File Descriptors: 13 Goroutines: 21 System Time: 2017-02-28T18:54:13.7726687Z EventsListeners: 0 Registry: https://index.docker.io/v1/ Experimental: true Insecure Registries: 127.0.0.0/8 Live Restore Enabled: false
Docker守护程序无法实现必要的内核ABI,因此无法在WSL下运行。如果您正在运行Windows的Docker,则可能正在连接到它管理的Hyper- V虚拟机。
因为它在另一台机器上,所以您将无法将WSL目录作为Docker卷挂载,但是可以从WSL目录构建映像。这是因为在构建中,客户端会创建一个tarball并将其发送到守护程序。