默认情况下,Docker守护进程Unix socket(/var/run/docker.sock)来进行本地进程通信,而不会监听任何端口,因此只能在本地使用docker客户端或者使用Docker API进行操作。如果想在其他主机上操作Docker主机,就需要让Docker守护进程打开一个HTTP Socket,这样才能实现远程通信。
编辑docker的配置文件/etc/default/docker修改DOCKER_OPTS成
#同时监听本地unix socket和远程http socket(2375)
DOCKER_OPTS="-H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375"
然后重新启动docker守护进程。
sudo service docker restart
至此如果服务器启用了防火墙,只要把2375端口开放既可以在其他主机访问本docker实例了。
例如:
DOCKER_HOST=$host:2375 docker ps
此时发现docker守护进程已经在监听2375端口,在另一台主机上可以通过该端口访问Docker进程了。
# docker -H IP:2375 images
本地操作docker。
# docker images