使用docker-java远程管理docker精进版(一)

  • 在前一篇文章中,小编采用了docker toolbox方法来安装了docker,并使用Java程序来链接docker,今天我将采用标准的VirtualBox来链接docker,学习类容主要是制作认证书和端口暴露。
  • 环境配置:
  • 虚拟机:VirtualBox5.2.12,网络链接方式我们选择桥接方式(这样虚拟机和主机之间保持网络互通)
  • 操作系统:Ubuntu-server16.4(操作系统版本必须在16以上,因为后续制作认证书需要里面的systemctl,低版本不支持该命令)

  •  Docker版本:Docker (Client/Server) 18.05.0-ce
  •  docker-Java版本: 3.0.14
  • 第一步;
  • 打开虚拟机,启动Ubuntu,接下来我们需要编辑一下docker.service这个文件夹,因为docker在启动的时候,实际读取的是docker.server这个文件的配置,使用如下命令:

  • sudo nano /lib/systemd/system/docker.service
  • 在里面找到ExecStart=/usr/bin/dockerd -H fd://,我们在这里配置端口
  • ExecStart=/usr/bin/dockerd  -H tcp://0.0.0.0:2375 -H fd://
  • -H tcp://0.0.0.0:2375-H tcp://0.0.0.0:2376),参数H是表示主机(HOSTIP0.0.0.0,是表示接受任何IP的访问,这样有点风险,不过后边我们会加强安保的。-H fd://是默认Unix协议通讯的意思,也就是很多文章提到的,-H unix:///var/run/docker.sock,于-H fd://是一个意思。在Linux下的Dockerclient端于server端的通讯就是基于unix协议的。
  • 加入上述行以后,按Ctrl+X键,根据提示按Y键,保存退出。
  • 要想让配置生效,首先要重新装载配置文件,用如下命令来重新装载:
  • $sudo systemctl daemon-reload,回车
  • $sudo service docker restart,回车
  • $sudo service docker status,来查看。
  • 再用$sudo netstat -lt,列出来用tcp协议监听端口的进程,如下图:

  • 使用docker-java远程管理docker精进版(一)

  • (我配置的是2376端口,我们发现该端口已经处于监听状态)

  • 而前面的tcp6说明是IPv6协议的,而tcpIPv4的,这里有必要简单说一下,现在Docker进程监听的协议都是tcp6的,经过配置可以改成IPv4的,但是在IPv6中,也可以接收IPv4发过来的请求。因此不必担心tcptcp6的差别。
  • 这样我们成功的让docker开始监听2375端口了,理论上docker已经可以接受远程访问了。
  • 但是,开放这个端口,会带来很大的安全隐患,即使有了防火墙的设置,因为通讯的内容是没有加密的,因此,我们需要加强安保措施,下一篇,我讲介绍如何加强安保措施,也就是通过自签名证书的安全认证。