本节主要配置docker客户端与守护进程的远程访问。也就是将docker的守护进程和客户端配置在不同的机器上。
环境准备
需要第二台安装docker的服务器,修改docker守护进程的启动选项,在启动项中添加label选项,用来区分两台服务器,第三在docker的服务器远程访问中需要保证Client API与Server API版本一致。
下述例子并未实操,来源网络:
第一台:
第二台:
可以看到Client API与Server API版本都是1.71。上一节已经在第二台服务器上添加了label选项。
在新的服务器上也添加这个选项:
名字设置为docker server 2,重启,查看相关信息:
修改服务器端的配置
docker守护进程的启动选项-H用来配置docker守护进程中服务器使用的socket,接受3种形式:
- tcp://host:port
- unix:///path/to/socket,
- fd://* or fd://socketfd
默认docker的守护进程使用unix配置
- -H unix:///var/run/docker.sock
修改的方法就是继续往后面添加修改DOCKER_OPTS的值(使用tcp模式,使用全0的地址就是告诉服务器使用自身的ip来绑定,通常使用2375这个端口作为服务的提供端口):
接下来就可以在另一台机子上访问当前服务,在访问之前需要知道这台服务器的ip地址
之后就可以使用这个ip地址来访问这个docker的守护进程。
修改客户端配置
那怎么通过客户端来进行远程访问呢?客户端的命令也支持-H选项,参数形式也一致。
使用客户端的命令参数-H:
可以看到返回docker server1的相关信息。如果要频繁地访问远程服务器,使用-H选项会非常地麻烦,docker客户端也提供了一个环境变量来简化这个操作。
如果指定了docker host这个环境变量,我们就可以在docker客户端像连接本机一样使用远程的docker服务。
需要连接本机时,将环境变量置空即可:
再回到docker server1的机器上,在这台服务器上将docker的连接设置为远程模式后运行本机的docker命令时会提示docker的守护进程不支持当前的连接:
怎样在设置了远程连接的服务器上也支持本机连接呢?可以采用在这台机器上配置一个环境变量,将地址指定到本机,或者使用tcp的管道来访问,或者在启动配置文件中参数-H指定多个参数值