本节主要配置docker客户端与守护进程的远程访问。也就是将docker的守护进程和客户端配置在不同的机器上。

环境准备

  需要第二台安装docker的服务器,修改docker守护进程的启动选项,在启动项中添加label选项,用来区分两台服务器,第三在docker的服务器远程访问中需要保证Client APIServer API版本一致。

下述例子并未实操,来源网络

第一台:

Linux docker 远程连接 docker连接远程服务器_服务器

第二台:

Linux docker 远程连接 docker连接远程服务器_守护进程_02

可以看到Client APIServer API版本都是1.71。上一节已经在第二台服务器上添加了label选项。

Linux docker 远程连接 docker连接远程服务器_守护进程_03

在新的服务器上也添加这个选项:

Linux docker 远程连接 docker连接远程服务器_服务器_04

Linux docker 远程连接 docker连接远程服务器_docker_05

名字设置为docker server 2,重启,查看相关信息:

Linux docker 远程连接 docker连接远程服务器_服务器_06

修改服务器端的配置

  docker守护进程的启动选项-H用来配置docker守护进程中服务器使用的socket,接受3种形式:

  1. tcp://host:port
  2. unix:///path/to/socket,
  3. fd://* or fd://socketfd

  默认docker的守护进程使用unix配置

  • -H unix:///var/run/docker.sock

  修改的方法就是继续往后面添加修改DOCKER_OPTS的值(使用tcp模式,使用全0的地址就是告诉服务器使用自身的ip来绑定,通常使用2375这个端口作为服务的提供端口):

Linux docker 远程连接 docker连接远程服务器_docker_07

  接下来就可以在另一台机子上访问当前服务,在访问之前需要知道这台服务器的ip地址

Linux docker 远程连接 docker连接远程服务器_docker_08

  之后就可以使用这个ip地址来访问这个docker的守护进程。

Linux docker 远程连接 docker连接远程服务器_Linux docker 远程连接_09

修改客户端配置

  那怎么通过客户端来进行远程访问呢?客户端的命令也支持-H选项,参数形式也一致。

  使用客户端的命令参数-H

Linux docker 远程连接 docker连接远程服务器_docker_10

  可以看到返回docker server1的相关信息。如果要频繁地访问远程服务器,使用-H选项会非常地麻烦,docker客户端也提供了一个环境变量来简化这个操作。

  如果指定了docker host这个环境变量,我们就可以在docker客户端像连接本机一样使用远程的docker服务。

Linux docker 远程连接 docker连接远程服务器_docker_11

  需要连接本机时,将环境变量置空即可:

Linux docker 远程连接 docker连接远程服务器_守护进程_12

  再回到docker server1的机器上,在这台服务器上将docker的连接设置为远程模式后运行本机的docker命令时会提示docker的守护进程不支持当前的连接:

Linux docker 远程连接 docker连接远程服务器_服务器_13

  怎样在设置了远程连接的服务器上也支持本机连接呢?可以采用在这台机器上配置一个环境变量,将地址指定到本机,或者使用tcp的管道来访问,或者在启动配置文件中参数-H指定多个参数值

Linux docker 远程连接 docker连接远程服务器_docker_14

Linux docker 远程连接 docker连接远程服务器_docker_15