我们都知道docker分为daemon和client端,我们通常使用docker ps,docker images都只是使用docker client与docker daemon进行通信,docker client发送请求给docker daemon,docker daemon返回结果给client。 默认情况下docker daemon支持unix通信(/var/run/docker.sock),这个可以通过以下命令check。$ netstat -nlp | grep docker

unix  2      [ ACC ]    STREAM    LISTENING    31160030 54974/docker        /var/run/docker.sock

如果需要在远程client与docker daemon进行通信,则需要docker daemon支持tcp通信。

在SUSE系统上,我们需要修改/etc/sysconfig/docker, 在DOCKER_OPTS的最后加上 ‘-H tcp://0.0.0.0:2375’,然后重新启动DOCKERsystemctl daemon-reload

systemctl restart docker

然后在client节点上添加以下环境变量,DOCKER_HOST=tcp://:2375

之后就可以在client端使用docker ps,docker images 等与docker daemon进行通信了。

在Ubuntu系统上则需要修改 /etc/default/docker 或者修改 /lib/systemd/system/docker.service(修改方法相信大家都能看明白)DOCKER_OPTS="-H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375"

修改完成后,大家可以重新启动。check一下。$netstat -nlp | grep docker

tcp6      0      0 :::2375                :::*                    LISTEN      59844/docker

unix  2      [ ACC ]    STREAM    LISTENING    31218536 59844/docker        /var/run/docker.sock

$ curl http://localhost:2375/version

{"ApiVersion":"1.18","Arch":"amd64","GitCommit":"7c8fca2","GoVersion":"go1.2.1","KernelVersion":"3.13.0-24-generic","Os":"linux","Version":"1.6.2"}

其他的linux系统可能设置稍有差异,不过原理是一样的,大家可以自行研究。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐