zoukankan      html  css  js  c++  java
  • Docker跨主机网络实践

    Docker使用中网络管理是最麻烦的,在项目初始化前期就需要进行合理的规划,如果在比较理想的单主机的网络通信是比较简单的,但如果涉及到跨主机的网络就需要使用docker自带的overlay network或者第三方的网络插件,本文是以直接使用自带插件的方式实现容器跨主机访问。

    基础条件
    1.docker版本需要在1.9
    2.Linux内核版本3.19以上(实际操作的centos内核是3.10,并未出现异常,需后期核实)
    3.跨主机之间可以正常通信

    consul服务搭建
    Docker跨主机通信需要key value的服务来保存网络的信息,有很多可以选择的服务,如consul,etcd,zookeeper等都可以,本文是以官方推荐的consul服务作为key value的服务。

    docker run -d --restart="always" --publish="8500:8500" --hostname="consul" --name="consul" index.alauda.cn/sequenceiq/consul:v0.5.0-v6 -server -bootstrap

     国外的镜像拉取很慢,选用了国内的灵雀云作为服务。

    配置改造
    因为已经使用了docker1.19版本了,在centos系统的/etc/sysconfig/docker已经不存在,但可以在/etc/systemd/system/multi-user.target.wants/docker.service中需要新增2个配置项
    1.--cluster-store=consul://10.19.137.180:8500  #内网的IP地址加上consul的端口,提供给要加入跨网络通信的服务地址
    2.--cluster-advertise=eth0:2375                         #以守护进程方式启动
    在另外一台的服务器同样填写自身通信的网卡信息以及consul的服务地址,修改完成后服务器需要重新加载配置和重启docker容器。

    systemctl daemon-reload
    systemctl restart docker

    创建overlay网络
    使用命令创建overlay类别的网络

    docker network create -d overlay leo

    使用docker network ls命令后会发现两台服务器已经有leo这个网络了,说明一切顺利

    测试网络
    分别在两台服务器创建docker容器进行测试
    服务器1

    docker run -itd --name=leo_zhou1 --net=leo  busybox

    服务器2

    docker run -itd --name=leo_zhou2 --net=leo  busybox

    进入leo_zhou1测试是否可以ping通leo_zhou2

  • 相关阅读:
    Kafka原理与java simple producer示例
    【转载】kafka的工作原理
    Python 基本类型转换
    hadooop2.6 job pending research
    记一次zookeeper集群搭建错误的排除
    Apache Drill Install and Test
    Linux或Unix环境利用符号链接升级Maven
    Android之Linearlayouy线性布局
    Effective Java Second Edition --- Builder Pattern
    java生产者/消费者模式实现——一生产者一消费者(操作值)
  • 原文地址:https://www.cnblogs.com/zhouzhifei/p/11987355.html
Copyright © 2011-2022 走看看