因为忘记关闭防火墙了!!!!!    要永久关闭!!

修改hostname

https://blog.csdn.net/qq_27327261/article/details/109100219

关闭防火墙

https://blog.csdn.net/qq_27327261/article/details/109099020

1) 初始化swarm

docker swarm init
# Swarm initialized: current node (0r4xjgtu4nd9txrsbfn1lo5gu) is now a manager.
#
# To add a worker to this swarm, run the following command:
#
#     docker swarm join \
#     --token SWMTKN-1-0q35cj5j0va82a0t3mhkbesirqb6lqgqlkmznbwx1ojbou4u75-ejrors77ezcw25nmy9g90u9a0 \
#     172.16.0.226:2377
#
# To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

2)创建overlay网络

docker network create -d overlay --attachable prod-overlay

3)创建10个overlay容器

docker service create -td --name c --replicas 10 --network prod-overlay busybox

4)不同虚拟机的容器ping一下是可以ping通的

docker exec    c.1.0d5lp95bt73ou3t18zky09qc5    ping     c.3.e9blo0rq21tnppvkmg66nsygi

https://blog.csdn.net/mylitboy/article/details/106369721

Docker Swarm实现跨宿主机容器间访问

麦粒橙 2020-05-27 06:05:47  264  收藏 1

分类专栏: Docker 文章标签: docker swarm

版权

使用Docker Swarm实现跨宿主机容器间访问

背景:

在SerA服务器,运行了一个任务调度系统xxl容器ConA。
在SerB服务器,运行了一个SpringBoot服务ConB,注册到任务调度系统中。

在任务调度系统中,看到的调度器节点IP是SerB服务器分配给ConB容器的IP地址。 导致任务调度系统调度失败,提示ConB地址链接不上。

分析下来,是由于ConA和ConB是跨宿主机的容器,无法通信。

网上看到了很多方案,包括Overlay网络、OpenvSwitch、consul方案等,最终使用Docker Swarm解决了,发现很简单,过程如下。

1. 初始化swarm

在主节点运行docker swarm init,初始化swarm。

docker swarm init
# Swarm initialized: current node (0r4xjgtu4nd9txrsbfn1lo5gu) is now a manager.
#
# To add a worker to this swarm, run the following command:
#
#     docker swarm join \
#     --token SWMTKN-1-0q35cj5j0va82a0t3mhkbesirqb6lqgqlkmznbwx1ojbou4u75-ejrors77ezcw25nmy9g90u9a0 \
#     172.16.0.226:2377
#
# To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

2. 创建Overlay网络

在主节点,创建overlay模式网络。

docker network create --driver=overlay --gateway 192.168.1.1 --subnet 192.168.1.0/24 --attachable my_network
# m3k69pn88gtre361upi

可以通过docker network ls命令,查看网络列表。

docker network ls
# NETWORK ID          NAME                DRIVER              SCOPE
# acaeb6e14a1e        bridge              bridge              local
# a8e5fdd055b9        docker_gwbridge     bridge              local
# b50eb414bcb4        host                host                local
# om6lst4j52go        ingress             overlay             swarm
# m3k69pn88gtr        my_network          overlay             swarm
# 0c76adacfcfc        none                null                local

3. 子节点加入集群

复制上面初始化swarm命令结果中的语句,在子节点运行即可。

docker swarm join \--token SWMTKN-1-va82a0t3mhkbesirqb6lqgqlkmznbwxu4u75-ejrors790u9a0 \172.16.0.226:2377
# This node joined a swarm as a worker.

可以在主节点,通过docker node ls命令,查看节点列表。

docker node ls
# ID                         HOSTNAME          STATUS  AVAILABILITY  MANAGER STATUS
# 0r4xjgtu4nd9tsbfn1lo5gu *  ecs-01            Ready   Active        Leader
# s67afk1e9nx0174yeqff6g2    ecs.h02           Ready   Active

4. 运行容器加入网络

在容器运行命令中,加入--network my_network --ip 192.168.1.123即可。

docker run -it -d --network my_network --ip 192.168.1.123 ubuntu

https://chanjarster.github.io/post/docker-overlay-network/

一种生产环境Docker Overlay Network的配置方案

January 9, 2019

介绍一种生产环境Docker overlay network的配置方案。

概要

先讲一下生产环境中的问题:

解决办法:

  1. 创建attachable的overlay network
  2. 有状态应用挂到这个overlay network上
  3. 无状态应用也挂到这个overlay network上

步骤

到manager节点上创建attachable的overlay network,名字叫做prod-overlay:

docker network create -d overlay --attachable prod-overlay

在manager节点上查看这个网络是否创建成功:

$ docker network lsNETWORK ID          NAME                DRIVER              SCOPE
fbfde97ed12a        bridge              bridge              local
73ab6bbac970        docker_gwbridge     bridge              local
a2adb3de5f7a        host                host                local
nm7pgzuh6ww4        ingress             overlay             swarm
638e550dab67        none                null                local
qqf78g8iio10        prod-overlay        overlay             swarm

在worker节点上查看这个网络,这时你看不到这个网络,不过不要担心,当后面在worker节点上创建工作负载后就能看到了:

$ docker network lsNETWORK ID          NAME                DRIVER              SCOPE
fbfde97ed12a        bridge              bridge              local
73ab6bbac970        docker_gwbridge     bridge              local
a2adb3de5f7a        host                host                local
nm7pgzuh6ww4        ingress             overlay             swarm
638e550dab67        none                null                local

在manager上创建容器c1,挂到prod-overlay network上:

docker run --name c1 --network prod-overlay -itd busybox

在worker上创建容器c2,挂到prod-overlay network上:

docker run --name c2 --network prod-overlay -itd busybox

在manager上创建service c,挂到prod-overlay network上:

docker service create -td --name c --replicas 2 --network prod-overlay busybox

验证

查看worker节点的network

之前在worker节点上没有看到prod-overlay network,现在你应该可以看见了:

$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
01180b9d4833        bridge              bridge              local
cd94df435afc        docker_gwbridge     bridge              local
74721e7670eb        host                host                local
nm7pgzuh6ww4        ingress             overlay             swarm
32e6853ea78d        none                null                local
dw8kd2nb2yl3        prod-overlay        overlay             swarm

确认容器可以互ping

到manager节点上,让c1 ping c2

$ docker exec c1 ping -c 2 c2
PING c2 (10.0.2.2): 56 data bytes
64 bytes from 10.0.2.2: seq=0 ttl=64 time=0.682 ms
64 bytes from 10.0.2.2: seq=1 ttl=64 time=0.652 ms

到manager节点上,让c1 ping tasks.ctasks.c是之前创建的service c的DNS name:

$ docker exec c1 ping -c 2 tasks.c
PING tasks.c (10.0.2.8): 56 data bytes
64 bytes from 10.0.2.8: seq=0 ttl=64 time=2.772 ms
64 bytes from 10.0.2.8: seq=1 ttl=64 time=0.694 ms

到manager节点上,让c1 查询 tasks.c的DNS name,可以看到tasks.c有两条记录:

$ docker exec c1 nslookup -type=a tasks.c
Server:     127.0.0.11
Address:    127.0.0.11:53Non-authoritative answer:
Name:   tasks.c
Address: 10.0.2.7
Name:   tasks.c
Address: 10.0.2.8

到manager节点上,查看service c的task,看到有c.1c.2两个task,分别部署在两个节点上:

$ docker service ps c
ID            NAME  IMAGE           NODE            DESIRED STATE  CURRENT STATE           ERROR  PORTS
p5n70vhtnz2f  c.1   busybox:latest  docker-learn-1  Running        Running 17 minutes ago
byuoox1t7cve  c.2   busybox:latest  docker-learn-2  Running        Running 17 minutes ago

c.1 task所在的节点上,查看task c.1的容器名:

$ docker ps -f name=c.1
CONTAINER ID  IMAGE           COMMAND  CREATED         STATUS         PORTS  NAMES
795a3bd3c20a  busybox:latest  "sh"     21 minutes ago  Up 21 minutes         c.1.p5n70vhtnz2f5q8p2pcvbyfmw

然后在c1里ping task c.1的容器名:

$ docker exec c1 ping -c 2 c.1.p5n70vhtnz2f5q8p2pcvbyfmw
PING c.1.p5n70vhtnz2f5q8p2pcvbyfmw (10.0.2.7): 56 data bytes
64 bytes from 10.0.2.7: seq=0 ttl=64 time=0.198 ms
64 bytes from 10.0.2.7: seq=1 ttl=64 time=0.128 ms

你同样可以:

  • c2里:

    1. ping c1
    2. ping tasks.c
    3. ping task c.1c.2的容器
  • 在task c.1c.2的容器里:
    1. ping c1c2
    2. ping tasks.c
    3. ping task c.1c.2的容器

注意

通过docker run / docker compose up创建的容器的名字,要保证在整个集群里是唯一的。docker 不会帮你检查名称冲突的情况,如果名称冲突了那么会得到错误的DNS结果。

参考资料

  • Use overlay networks
  • Use an overlay network for standalone containers
  • Docker Reference Architecture: Designing Scalable, Portable Docker Container Networks

复制vmware overLay网络无法ping通 ping www.baidu.com可以相关推荐

  1. MAC ping IP 地址(ping通/ping不通)

    我们在做项目时,常常需要请求后台服务器获取数据..但是有时候请求不到数据:1.你的请求方式有问题(客户端) :2.后台服务器有问题(其中有一种情况 是IP 地址不正确或者网络连接不通,这可以用 pin ...

  2. CentOS7网络配置ping通外网

    随着服务器的增多,网络环境越来越复杂,linux网络管理越来越显的重要,接下来我们介绍一下linux网络管理命令来提高运维效率. ping检查网络连通性 ping 常常用来测试与目的主机的连通性. 可 ...

  3. linux使用ping命令ping本机,Linux下使用ping命令判断网络的好坏

    简介 在Linux系统里面如果想判断网络的好坏,脑海中蹦出的第一个命令就是ping了. ping命令基本是最常用的网络命令,它可以用来测试与目标主机的连通性. ping通过发送ICMP ECHO_RE ...

  4. 虚拟机(VMware)安装Centos后,网络配置(设定静态IP、本地主机与虚拟机互ping通)

    虚拟机(VMware)安装Centos后,网络配置(设定静态IP.本地主机与虚拟机互ping通) 提示:写这篇东西的背景是:本人对计算机网络不太熟,但又遇上要配置虚拟机.本想着搭个集群环境直接就搞正事 ...

  5. VMware虚拟机银河麒麟服务器系统与物理windows主机网络设置相互ping通处理方案之桥接

    关于虚拟机与物理主机网络设置的相互ping通问题,我已经踩过无数个坑了,于是,在经历再一次各种ping不通之后,忍无可忍,我决定将整个步骤以及注意的事项记录下来,以便后续的翻阅以及大家参考. 本次配置 ...

  6. VMware虚拟机拷贝到另一台电脑后如何ping通网络

    我们在拷贝虚拟机的时候,会把虚拟机的各种配置也附带过来,其中网关的设置与自己的电脑不符合,所以会出现无法ping通网络的情况.那么我们就来看下需要怎么把配置改为自己电脑的. 首先说下,我个人装的虚拟机 ...

  7. Vmware Centos7 配置静态 ip 和 使宿主机和虚拟机互相 ping 通

    NAT 方式 1. 配置静态 ip Vmware 安装 Centos7 可以参考 https://blog.csdn.net/guo_ridgepole/article/details/7897376 ...

  8. VMware下安装的CentOS 7如何配置IP地址并能与Windows物理机ping通

    初学习LINUX时,不知道如何配置IP地址,在百度和自己做实验后,整理资料如下: 一.显示当前网卡配置信息 [root@localhost ~]# Ifconfig (通常才安装的系统是没有配置IP地 ...

  9. Virtual Box6.1配置CentOS6.5版本的网络连接(静态IP设定)——虚拟机和宿主机互相ping通以及ping通连接外网

    1. 初始状态 1.1 对于每个刚创建的虚拟机,virtual box给虚拟机默认只配置了网卡1,而且是[网络地址转换(NAT)]格式,当我们启动虚拟机后,使用ifconfig命令,如下图. 1.2 ...

最新文章

  1. 在 VMware ESXi 5.0 上安装万兆网卡驱动
  2. 第一次,人类在人工神经网络中发现了“真”神经元
  3. java 基本类型 object_Java常用类-Object类
  4. 七牛云:调用七牛OCR接口,几行代码识别身份证信息
  5. 【Tools】怎样转载博客到CSDN博客(很实用)
  6. [ARM异常]-ARM体系中是否支持中断嵌套
  7. 【决策单调性】玩具装箱(金牌导航 决策单调性优化DP-1)
  8. pulsar 容量_Pulsar 负载均衡设计
  9. LWIP的UDP相关API
  10. 蓝桥杯2019年第十届C/C++省赛B组第一题-组队
  11. 阿里java工具包_阿里开源的Java诊断工具Arthas(阿尔萨斯)
  12. G面经prepare: BuyGoods
  13. 关系数据库设计理论--3NF
  14. SQL中的join的详细用法!inner join,full outer join,left join,right jion
  15. Chrome一直在更新的几个广告拦截插件
  16. QGIS 3.0 使用教程
  17. 李华《灵武二孝赞并序》中之“灵武”系指何地?
  18. 本科课程【虚拟现实引擎Unity3D】实验3 - 烘焙光影贴图与动画应用
  19. 原生js实现循环精灵图
  20. Mac Ports的安装和卸载

热门文章

  1. P3706 [SDOI2017]硬币游戏
  2. cf451E. Devu and Flowers(产生不同多重集数量)
  3. cf1561D Up the Strip(D1D2)
  4. 2019 ICPC Asia Nanjing Regional
  5. CF741C Arpa’s overnight party and Mehrdad’s si
  6. 牛客题霸 [斐波那契数列] C++题解/答
  7. [2020-11-30 contest]数列(矩阵加速),秘密通道(dijkstra最短路)小X游世界树(换根dp),划分(数学)
  8. CF827F-Dirty Arkady‘s Kitchen【堆】
  9. P3293-[SCOI2016]美味【主席树】
  10. Codeforces Round #662 (Div. 2)