在同一台宿主机上,差别的Docker容器可以借助docker0的网桥直接举行通讯。而在实际的项目中,一个复杂的体系通常须要摆设多个组件。为了进步组件的运行的服从通常这些组件须要摆设到差别的主机上。那么在Docker中怎样实现容器的跨主机通讯呢?现在紧张可以通过3种差别的方式来实现Docker容器跨主机通讯的功能:
但利用这种方式在跨主机通讯时,由于须要宿主机的转发,利用起来会非常不方便。
- 方式二:通过借助Docker Overlay网络来实现。
这种方式可以直接利用容器本身的假造IP地点举行相互通讯,这与运行在同一台宿主机上的差别容器通讯方式完全一样。Docker原生的Overlay网络则是如许的一个办理方案,它也是现在实现容器跨节点通讯的主流的数据传输和路由方案。要利用Overlay网络还须要有注册中央的支持。
- 方式三:通过借助第三方网络来实现容器的跨节点通讯,如flannel网络等。
下面偏重先容方式二的实现过程。
Overlay网络是在不改变现有网络的条件下,对IP报文上举行数据格式的封装,从而利用IP路由协议实现了数据的转发功能。在Overlay网络中通过扩展标识位,可以支持高达16M的用户。Docker的Swarm集群便是Overlay网络的一个实现,而利用Overlay网络须要注册中的支持。注册中央可以或许提供服务的注册与发现功能。Docker支持的注册中央有ZooKeeper、Consul和Etcd。
点击这里检察视频讲授:【赵渝强老师】Docker容器的跨节点通讯下面以ZooKeepper为例来举行先容。在ZooKeeper网站上提供了ZooKeeper的安装介质。由于ZooKeeper基于的Java语言,因此,在安装ZooKeeper之前须要先安装Java的JDK情况。下面的步调将摆设一个单节点的ZooKeeper实例。
(1)解压缩JDK的安装介质,这里利用的版本是jdk-8u181-linux-x64.tar.gz。- $ tar -zxvf jdk-8u181-linux-x64.tar.gz -C /root/
复制代码 (2)编辑文件“/root/.bash_profile”设置Java的情况变量。输入下面的内容:- JAVA_HOME=/root/jdk1.8.0_181
- export JAVA_HOME
- PATH=$JAVA_HOME/bin:$PATH
- export PATH
复制代码 (3)见效Java的情况变量。- $ source /root/.bash_profile
复制代码 (4)解压缩ZooKeeper的安装介质,这里利用的版本是zookeeper-3.4.10.tar.gz。- $ tar -zxvf zookeeper-3.4.10.tar.gz -C /root
复制代码 (5)进入ZooKeeper目次天生ZooKeeper的设置文件。- $ cd zookeeper-3.4.10
- $ cp conf/zoo_sample.cfg conf/zoo.cfg
复制代码 (6)启动ZooKeeper实例。(7)检察ZooKeeper实例的状态,如下图所示。这时ZooKeeper是standalone状态,阐明这是一个单节点的ZooKeeper实例。
有了ZooKeeper注册中央的支持,就可以进一步实现Docker容器的跨节点通讯了。下表表现了摆设的情况信息。
具体的利用步调如下:
(1)在master节点上修改文件“/usr/lib/systemd/system/docker.service”的内容,将参数“ExecStart”改为下面的内容。- ExecStart=/usr/bin/dockerd-current \
- --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
- --default-runtime=docker-runc \
- --exec-opt native.cgroupdriver=systemd \
- --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
- --init-path=/usr/libexec/docker/docker-init-current \
- --seccomp-profile=/etc/docker/seccomp.json \
- -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock \
- --cluster-store zk://192.168.79.11:2181 \
- --cluster-advertise 192.168.79.11:2375 \
- $OPTIONS \
- $DOCKER_STORAGE_OPTIONS \
- $DOCKER_NETWORK_OPTIONS \
- $ADD_REGISTRY \
- $BLOCK_REGISTRY \
- $INSECURE_REGISTRY \
- $REGISTRIES
- # 其中增加的主要参数如下。
- # --cluster-store:指定ZooKeeper的地址和端口。
- # --cluster-advertise:将Docker注册到ZooKeeper中的地址信息。
复制代码 (2)重启master节点上的Docker服务。- $ systemctl daemon-reload
- $ systemctl restart docker
复制代码 (3)在node1节点上修改文件“/usr/lib/systemd/system/docker.service”的内容,将参数“ExecStart”改为下面的内容。- ExecStart=/usr/bin/dockerd-current \
- --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
- --default-runtime=docker-runc \
- --exec-opt native.cgroupdriver=systemd \
- --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
- --init-path=/usr/libexec/docker/docker-init-current \
- --seccomp-profile=/etc/docker/seccomp.json \
- -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock \
- --cluster-store zk://192.168.79.11:2181 \
- --cluster-advertise 192.168.79.12:2375 \
- $OPTIONS \
- $DOCKER_STORAGE_OPTIONS \
- $DOCKER_NETWORK_OPTIONS \
- $ADD_REGISTRY \
- $BLOCK_REGISTRY \
- $INSECURE_REGISTRY \
- $REGISTRIES
复制代码 (4)重启node1节点上的Docker服务。- $ systemctl daemon-reload
- $ systemctl restart docker
复制代码 (5)进入ZooKeeper目次,启动ZooKeeper下令行客户端。- $ cd /root/zookeeper-3.4.10
- $ bin/zkCli.sh
复制代码 (6)检察master和node1在ZooKeeper中的注册信息,如下图所示。
(7)在恣意节点上创建overlay网络,比方在master上实验下面的语句。- $ docker network create -d overlay my_multi_hosts
- # 其中的参数-d 用于指定创建网络的类型,这里指定的是overlay。
- # 在node1节点上此时会自动同步新创建的网络my_multi_hosts。
复制代码 (8)在master大概node1上检察Docker的网络信息,如下图所示。这时可以看到新创建的网络“my_multi_hosts”。
(9)在master节点上,利用my_multi_hosts的overlay网络启动一个容器,并确定容器的IP地点,如下图所示。从图中可以看成box1的IP地点是“10.0.0.2”。- $ docker run -it --net=my_multi_hosts --name box1 busybox
- $ ifconfig eth0
复制代码
(10)在node1节点上,利用my_multi_hosts的overlay网络启动一个容器,并确定容器的IP地点,如下图所示。从图中可以看成box2的IP地点是“10.0.0.3”。- $ docker run -it --net=my_multi_hosts --name box2 busybox
- $ ifconfig eth0
复制代码
(11)现在box1和box2既可以通过假造IP地点举行通讯,也可以通过DNS Server举行通讯,如下图所示。
(12)利用ZooKeeper的图形化工具ZooInspector登录ZooKeeper。这时就可以完备看到Overlay网络在ZooKeeper中的注册信息,如下图所示。
免责声明:如果侵犯了您的权益,请联系站长及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金. |