Docker 多主机网络通信详细介绍

 更新时间:2016年10月21日 08:41:05   投稿:lqh  
这篇文章主要介绍了Docker 多主机网络通信详细介绍的相关资料,需要的朋友可以参考下

最近做项目是关于Docker 的网络通信,需要多个主机进行链接通信,这里记录下,以后便于项目开发,大家需要的话也可以看下,少走些弯路。

Docker多主机网络通信详解             

Docker支持多主机网络通信功能,可以通过命令行建立多主机通信网络。本文使用Docker machine和Consul服务发现工具来讲解这一点。

前提是需要先安装Docker工具箱。

1、Docker Multi-Host Networking

作为一个示例,我们会在VirtualBox虚拟机上使用docker machine创建3个Docker主机。其中一个Docker主机运行Consul服务发现工具,另外两个Docker主机则通过第一台主机的Consul服务发现容器共享网络信息。

Docker容器网络部分的相信信息可查看:
https://docs.docker.com/engine/userguide/networking/dockernetworks/
Consul的详细信息见: https://www.consul.io/

Consul的特性:

1)服务发现

Consul使得服务注册和服务发现变得很简单

2)故障检测

支持对服务的健康检查,防止请求被路由到服务不可用的主机上

3)支持多数据中心

Consul支持多数据中心,无需复杂的配置

4)键值存储

Consul使用了键值存储来支持动态配置等

2、设置多主机网络

1)创建名为“host1-Consul”的Docker主机

docker-machine create -d virtualbox host1-Consul

2)在“host1-Consul”主机上运行Consul容器

docker $(docker-machine config host1-Consul) run -d -p "8500:8500" -h"Consul" progrium/Consul -server -bootstrap

3)验证上述容器的运行状态

docker $(docker-machine config host1-Consul) ps

4)运行第二个Docker主机,并注册到前面的Consul容器

docker-machine create -d virtualbox  --engine-opt="cluster-store=Consul://$(docker-machine ip host1-Consul):8500" --engine-opt="cluster-advertise=eth1:0" host2

5)运行第三个Docker主机

docker-machine create -d virtualbox  --engine-opt="cluster-store=Consul://$(docker-machine ip host1-Consul):8500" --engine-opt="cluster-advertise=eth1:0" host3

现在,后面两个Docker主机都有默认的网络配置,且只能用于单个主机的通信。

6)要实现多主机网络通信,还需要在主机2上创建一个覆盖网络

docker $(docker-machine config host2) network create -d overlay myapp

7)OK,此时如果在主机3上检查网络,就可以看到主机2上创建的覆盖网络。这是因为主机2和3都注册到Consul,网络信息在所有已注册的主机之间实现了共享。

docker $(docker-machine config host2) network ls
docker $(docker-machine config host3) network ls

如果是在不同的主机上运行容器,可能就需要使用容器名来连接它们。我们可以这样做个测试。
在主机2上运行一个Nginx容器,在主机3上运行一个busybox容器,通过busybox容器下载Nginx容器默认页面来测试连接是否正常。

8)在主机2上运行Nginx容器,并指定创建的“myapp”网络

docker $(docker-machine config host2) run -itd --name=webfront --net=myapp nginx

9)验证Nginx容器的运行

docker $(docker-machine config host2) ps

10)在主机3上运行一个busybox容器,使用参数下载主机2的Nginx容器的默认主页。

docker $(docker-machine config host3) run -it --rm --net=myapp busybox wget -qO- http://webfront

如果结果返回的是HTML内容的输出,意味着容器能够使用之前创建的覆盖网络连接到主机。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • docker安装influxdb的详细教程(性能测试)

    docker安装influxdb的详细教程(性能测试)

    这篇文章主要介绍了docker安装influxdb的详细教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • ubuntu14.04+docker的安装及使用

    ubuntu14.04+docker的安装及使用

    这篇文章主要介绍了在ubuntu14.04中安装docker的方法以及docker的使用指南,非常简单实用,有需要的朋友可以参考下
    2014-10-10
  • Harbor搭建Docker私有仓库的实现方法

    Harbor搭建Docker私有仓库的实现方法

    Harbor是一个由CNCF托管的开源的Docker镜像仓库管理工具,我们可以通过它快速的建立起自己的私有仓库,本文就详细的介绍了Harbor搭建Docker私有仓库的实现方法,感兴趣的可以了解一下
    2021-06-06
  • Ubuntu Docker 安装教程

    Ubuntu Docker 安装教程

    这篇文章主要为大家详细介绍了Ubuntu Docker 安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • 使用docker搭建redis主从的方法步骤

    使用docker搭建redis主从的方法步骤

    这篇文章主要介绍了使用docker搭建redis主从的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • docker安装RocketMQ的实现步骤

    docker安装RocketMQ的实现步骤

    本文主要介绍了docker安装RocketMQ的实现步骤,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • docker-compose安装步骤和常用命令详解

    docker-compose安装步骤和常用命令详解

    这篇文章主要介绍了docker-compose安装步骤和常用命令,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Docker设置代理的方法教程

    Docker设置代理的方法教程

    本篇文章主要介绍了Docker设置代理的方法教程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • Docker部署SpringBoot项目的实现步骤

    Docker部署SpringBoot项目的实现步骤

    本文主要介绍了Docker部署SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2007-02-02
  • 滚动 docker 中的 nginx 日志思路详解

    滚动 docker 中的 nginx 日志思路详解

    Nginx 自己没有处理日志的滚动问题,本文笔者介绍如何滚动运行在 docker 中的 nginx 日志文件,感兴趣的朋友一起看看吧
    2018-08-08

最新评论