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

Docker跨主机网络实践的更多相关文章

  1. Docker跨主机网络——overlay

    前言 在Docker网络--单host网络一文中,我为大家总结了Docker的单机网络相关知识和操作,单机网络比较容易.本文我为大家总结Docker跨主机通信相关知识.同样本文大部分内容以CloudM ...

  2. Docker 跨主机网络 overlay(十六)

    目录 一.跨主机网络概述 二.准备 overlay 环境 1.环境描述 2.创建 consul 3.修改 docker 配置文件 4.准备就绪 三.创建 overlay 网络 1.在 host1 中创 ...

  3. Docker 跨主机网络

    Docker提供两种原生的跨主机网络: Overlay  和  Macvlan libnetwork & CNM libnetwork 是 docker 容器网络库,最核心的内容是其定义的 C ...

  4. Docker 跨主机网络方案分析

    PS:文章首发公众号,欢迎大家关注我的公众号:aCloudDeveloper,专注技术分享,努力打造干货分享平台,二维码在文末可以扫,谢谢大家. 上篇文章介绍了容器网络的单主机网络,本文将进一步介绍多 ...

  5. Docker跨主机网络解决方案

    前言:前面的部分一直都是单机跑docker,但实际生产环境不可能只用一台来跑.肯定会用到多台,因为他们都是内部私有ip,那么多台主机之间的容器如何通信?这个是个很头疼的问题!目前主流几种方法如下:1. ...

  6. 安装docker跨主机网络flannel

    一.实验环境 机器 操作系统 安装服务 172.16.4.36 centos7 docker etcd flannel 172.16.4.37 centos7 docker etcd flanne ( ...

  7. docker 跨主机网络:overlay 简介

    简介 docker 在早前的时候没有考虑跨主机的容器通信,这个特性直到 docker 1.9 才出现.在此之前,如果希望位于不同主机的容器能够通信,一般有几种方法: 使用端口映射:直接把容器的服务端口 ...

  8. Docker跨主机网络联通之etcd实现

    搭建ETCD集群 查看NODE1机器IP,并启动ETCD ubuntu@docker-node1:~$ ifconfig eth0 eth0: flags=4163<UP,BROADCAST,R ...

  9. centos7下安装docker(15.2跨主机网络-overlay)

    为支持容器跨主机通信,Docker提供了overlay driver,使用户可以创建基于VxLAN的overlay网络.VxLAN可将二层数据封装到UDP进行传输,VxLAN提供与VLAN相同的以太网 ...

随机推荐

  1. Python+request+ smtplib 测试结果html报告邮件发送(上)《五》

    此方法通用适合所有邮箱的使用,只需注意几个点,如下: QQ邮箱.其他非QQ邮箱的写法,区别点如下: #--------------------------使用腾讯企业邮箱作为发件人的操作如下----- ...

  2. Python+request 登录接口reponse的返回值token跨py文件的传递《二》

    主要使用场景: 一般我们在进行接口测试时,依赖登录接口后reponse中的某些返回值,因此需要将login接口单独写一个py文件,另外的py文件均可调用login的reponse返回值使用.共用登录接 ...

  3. hbase实践之Rowkey设计之道

    笔者从一开始接触hbase就在思考rowkey设计,希望rowkey设计得好,能够支持查询的需求.使用hbase一段时间后,再去总结一些hbase的设计方法,无外乎以下几种: reverse salt ...

  4. Python中的if和while

    if 判断 if形式有三种: 1.if ... 2.if ... else ... 3.if ... elif ... else ... 实例: inp = raw_input('>>&g ...

  5. 如果简化stm32中printf函数的使用——首先重定向

    STM32单片机极简方法 使用宏定义 代替复杂的重定向printf()函数,实现串口打印.(HAL库例程)https://blog.csdn.net/wu10188/article/details/9 ...

  6. Java内存模型与垃圾回收笔记

    内存模型 栈. 局部变量(基本类型)与对象引用:线程隔离.每个方法执行时会创建一个栈帧,存储局部变量等. 堆. 对象实例:线程共享. 方法区.类信息.常量(final).静态变量.符号引用: 线程共享 ...

  7. [SaSS] Using Object like style to create class dynamiclly

    $black: #; $white: #fff; $yellow: #ffe183; $dark-red: #e70404; $dark-green: #0d8268; $cloud-blue: #d ...

  8. Python 8--异常

  9. 000_linux之Ubuntu安装

    今天2018/6/1 今天是六一儿童节,天气凉爽,心情挺好的.然后本着开开心心的心情,将前面忘记写linux的Ubuntu没安装的写一下,以后自己回来看就很方便了.使用的是白问网制作的ubuntu,假 ...

  10. c实现队列

    使用链表实现队列的入队和出队 #include <iostream> #include <stdio.h> #include <string.h> #include ...