Docker集群网络的配置和使用

Docker学习:跨宿主机通信 | overlay和macvlay(理论+实战篇) 尽管overlay(overlay2)和macvlan都可以实现跨宿主机通信,但是相对的前者更为便捷一些,但是随着新容器编排技术的不断涌现,这些当时时髦的技术也终将被替代。就连docker官网自己推出的Docker-compose[官网](它是一个单机多容器部署工具,不支持多机)编排工具,也正在被k8s(支持多容器、多机部署)替代,后续将陆续对这些编排工具做具体介绍。 不过这些不重要,长江后浪推前浪,k8s终究是配置太多,强大的同时也太繁琐,终将会被更强大的其他替代,万变不离其宗,了解了这些底层些的知识,再 阅读详情

总结

当我们开始使用Docker时,典型的配置是在某个机器上创建一个独立的应用程序。

在大多数情况下,在一台机器上运行所有的应用程序通常是不实际的,这种情况下,您将需要一种方法来跨许多机器分发应用程序。

这就是Docker集群所提供的功能。

Docker Swarm提供集群、可扩展性、发现和安全性等功能。在本文中,我们将创建一个基本的群集配置,并执行一些测试来说明docker的发现和连通性。

在这个演示中,我们将创建一个Docker集群,它将由一个集群管理器和一个Worker组成。为了方便起见,它将在AWS上运行。

体系架构

我们的目标架构将由运行在不同EC2主机上的AWS AMI映像中的几个Docker容器组成。这些示例的目的是演示如何使用Docker群集发现运行在不同主机上的服务并相互通信的概念。

 

Docker集群网络的配置和使用

 

在上面的Docker集群网络中,我们描述了Docker群管理器和几个Docker Worker之间的相互连接。在接下来的示例中,为了降低复杂性和成本,我们将使用一个管理器和一个Worker。请记住,您的实际配置可能由许多Docker Worder组成。

下面是一个潜在用例的示例。AWS负载均衡器,配置为将负载分配给运行在两个或多个EC2实例上的Docker群。

Docker集群网络的配置和使用

 

我们将在下面的示例中展示如何创建Docker群集网络,该网络将允许成员的DNS发现并允许成员之间进行通信。

先决条件

我们假设您对Docker有些熟悉,并且熟悉在AWS中设置EC2实例。

如果你对AWS不自信或想要稍微复习一下,请阅读以下文章:

Provision a free tier EC2 instance

Configure Docker on your EC2 instance

一些AWS服务将产生费用,所以请确保停止和/或终止您不使用的任何服务。此外,考虑设置账单警报,以警告您的收费太多。

配置

首先创建两个(2)EC2实例,然后在每个EC2实例上安装Docker。请参阅Docker支持的平台一节,了解Docker安装指南和实例说明。

以下是AWS开放端口以支持Docker Swarm和我们的端口连接测试:

在AWS Mule SG开放端口

Docker集群网络的配置和使用

 

对于我们的示例,我们将使用以下IP地址描述节点1和节点2:

Node 1: 10.193.142.248

Node 2: 10.193.142.246

在开始之前,让我们先看看现有的Docker网络。

Docker 网络

docker network ls

如果您从未在这个Docker守护进程上添加过网络或初始化过群集,那么网络列表的输出应该至少与下面的列表相似。

其他网络也可以显示。

Docker网络列表的结果:

Docker集群网络的配置和使用

 

从节点1,我们开始初始化群集。

创建 Swarm 主节点

docker swarm init --advertise-addr=10.193.142.248

您应该得到如下所示的响应。我们将使用提供的token将其他节点连接到群集。

swarm 初始化响应结果

Swarm initialized: current node (v9c2un5lqf7iapnv96uobag00) is now a manager.

To add a worker to this swarm, run the following command:

docker swarm join --token SWMTKN-1-5bbh9ksinfmajdqnsuef7y5ypbwj5d9jazt47urenz3ksuw9lk-227dtheygwbxt8dau8ul791a7 10.193.142.248:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

根CA证书需要一到两分钟才能在群集中同步,因此,如果出现错误,请等几分钟后,然后再试一次。

如果您碰巧放错了令牌,您可以使用join-tokenargument为manager和worker列出令牌。

例如,在节点1上运行以下命令:

Manager Token for Node 1

docker swarm join-token manager

接下来,让我们把节点2加入群集。

Node 2 Joins Swarm

docker swarm join --token SWMTKN-1-5bbh9ksinfmajdqnsuef7y5ypbwj5d9jazt47urenz3ksuw9lk-227dtheygwbxt8dau8ul791a7 10.193.142.248:2377

This node joined a swarm as a worker.

从群集主节点1,我们现在可以看到连接的节点

在主节点, 列出所有节点

docker node ls

Results of Listing Nodes

Docker集群网络的配置和使用

 

另外,请注意,已经创建了一个Ingress网络,这为我们的群集网络提供了一个入口点。

Results of Docker Network Listing

Docker集群网络的配置和使用

 

让我们继续为单独容器创建集群网络。

Overlay Network Creation on Node 1

docker network create --driver=overlay --attachable my-overlay-net

docker network ls

Results of Docker Network Listing

Docker集群网络的配置和使用

 

运行我们的容器,加入 Overlay 网络

docker run -it --name alpine1 --network my-overlay-net alpine

Node 2加入 overlay网络, 我们使用打开端口 8083来测试我们在运行容器的连通性。

运行容器, 加入 Overlay 网络

docker run -it --name alpine2 -p 8083:8083 --network my-overlay-net alpine

验证我们的Overlay网络连通性

通过我们的容器运行,我们可以测试我们可以使用群集配置的DNS发现我们的主机。从节点2,让我们ping一下Nod 1容器。

Node 2 Pings Node 1, Listens on Port 8083

ip addr # show our ip address

ping -c 2 alpine1

# create listener on 8083

nc -l -p 8083

从节点1LetsPing节点2容器并连接到端口8083上它的open Listener

Node 1 Pings Node 2, Connect to Node 2 Listener on Port 8083

ip addr # show our ip address

ping -c 2 alpine2

# connect to alpine2 listener on 8083

nc alpine2 8083

Hello Alpine2

^C

在这里,您创建了从节点1到节点2的tcp连接,并发送了一条消息。类似地,在Docker overlay集群中运行时,您的服务可以连接和交换数据。

有了这些基本的构建块,您就可以将这些原则应用到实际的设计中了。

Cleanup

测试完成后,我们可以清理群配置。

Remove Node 2 Swarm

docker container stop alpine2

docker container rm alpine2

docker swarm leave

Remove Node 1 Swarm

docker container stop alpine1

docker container rm alpine1

docker swarm leave --force

这就是我们创建DockerOverlay网络的简单示例。通过简单的示例,可以创建更大、更复杂的Docker容器集群网络。

请确保删除在这些示例中可能使用的AWS资产,这样就不会产生任何持续的成本。

请关注公众号:程序你好

Docker网络教程(三)overlay 网络教程 演示了如何创建和使用你自己的自定义 overlay 网络,以连接服务。建议在生产环境中运行的服务使用这个方法。 阅读详情

相关推荐

Docker三种自定义网络(bridge、macvlan、overlay )

一、概述 Docker 提供三种 网络驱动:bridge, macvlan 和 overlay overlay 和 macvlan 用于创建跨主机的网络 二、自定义桥接(bridge)网络 这个网桥类似于默认网络中的 bridge 创建自定义网络命令:docker network create $ docker network create --driver bridge --subnet 172.19.0.0/16 --gateway 172.19.0.1 mybridge_net 参数解释:

匠人精神,持之以恒! 3639

Docker 网络命令

创建网络 概述 create 命令用于创建一个新的容器网络。Docker 内置了 bridge(默认使用)和 overlay 两种驱动,分别支持主机和多主机场景。Docker 服务在启动后,会默认创建一个 bridge 类型的网桥 bridge。不同网络之间默认相互隔离。 命令 docker network create chiyi_net 支持参数: -attachable[=false]:支持手动容器挂载 -aux-address=map[]:辅助的 IP 地址 -config-

smile_tianya的博客 1308

Docker数据管理、网络通信、资源控制、docker swarm集群配置与使用

Doker数据管理 容器的数据管理操作可以方便查看容器内产生的数据或者将多个容器中的数据实现共享。管理Docker容器中数据主要有两种方式:数据卷(Data Volumes)和数据卷容器(Data Volumes Containers)。 一、数据卷(学习课本上是自行创建my-vol,这里实际运用一下,具体大家可以网上搜一下教程) 数据卷是一个供容器使用的特殊目录,位于容器中,可将宿主机的目...

小渣渣的博客 642

【Docker】常用命令 docker network create

在深入探讨命令之前,我们首先需要了解Docker网络。Docker网络是用来连接Docker容器的虚拟网络。命令就是用来创建这些虚拟网络的。通过上述命令,可以创建一个名为my_network的桥接网络,并指定了自定义的子网和网关。通过本文的介绍,读者应该对命令有了更深入的了解。这个命令是创建Docker网络的关键工具,使得用户可以轻松地创建各种类型的网络,并根据需求进行定制。建议读者在实践中多多尝试,根据实际情况使用不同的选项和参数,以便创建出适合自己应用场景的网络。

好久不见的流星 4019

使用Docker Compose一键部署bitnami/etcd集群:从配置文件到网络设置的完整实践

本文详细介绍了如何使用Docker Compose一键部署高可用的bitnami/etcd集群。内容涵盖从配置文件编写、自定义网络规划到完整docker-compose.yml编排的完整实践,重点解决了多节点协同启动、静态IP分配等常见问题,并提供了集群状态验证与基础故障排查方法,为开发者搭建可靠的分布式键值存储服务提供了清晰指南。

weixin_29240711的博客 290

[零基础]用docker搭建Hadoop集群

[零基础]用docker搭建Hadoop集群,每一步都有详细的解释!

weixin_56114243的博客 2万+

docker深入2-使用自定义的网络来配置zookeeper集群

docker深入2-使用自定义的网络来配置zookeeper集群2016/6/24 一、示例 测试环境基于文档:docker深入2-熟悉v1.11和找不同.txt 目标:熟悉自定义网络的应用 ------------------------------------------------------- ----------------------n36.test-----...

weixin_33858485的博客 221

docker搭建kafka集群

docker搭建kafka集群 我在M1 mbp上使用的以下镜像 新建文件zk-kafka-docker-compose.yml version: "2" services: zookeeper: user: root image: docker.io/zookeeper ports: - "12181:2181" environment: - ALLOW_ANONYMOUS_LOGIN=yes volumes: - zoo

Learn From The Masters 7252

使用Docker搭建Flink集群

文章目录前言方式一:使用docker命令进行构建方式二:使用docker-compose进行构建如何查看Flink集群和日志通过web查看集群查看日志命令答疑解惑 前言 最近接触了一下docker,想搭个Flink集群玩一玩,在网上搜了一下,发现挺多都是从Dockerfile开始构建的,然后我在官网上看了一下,发现有使用Docker进行搭建的教程。我参考官网的方式,在Linux环境下进行构建,顺...

godelgnis的博客 8344

使用Docker搭建Hadoop集群和Spark集群

# 行命令退出安全模式 docker exec -it namenode hadoop dfsadmin -safemode leave # create the input directory on HDFS hadoop fs -mkdir -p input # create directory and files insdie namenode mkdir input echo "Hello World" >input/f1.txt echo "Hello Docker" >input

anron的专栏 1587

Amber实战:小分子配体MD模拟全流程避坑指南(附磷酸基团处理技巧)

本文提供了一份基于Amber软件进行小分子配体分子动力学模拟的实战避坑指南。详细解析了从晶体结构预处理、配体参数化(重点探讨AM1-BCC与RESP电荷选择)、复合物体系构建到模拟稳定性调试的全流程。特别针对磷酸基团等特殊官能团处理中常见的模拟崩溃问题,给出了系统性的诊断与解决方案,旨在帮助研究者获得稳定可靠的模拟结果。

weixin_29237635的博客 682

Docker搭建kafka集群

Docker搭建kafka集群

weixin_48412846的博客 5022

车载以太网测试技术解析

在智能汽车与HiL测试领域,高效解析与模拟车载网络通信是开发验证的关键。ZD-Converter 2000以媒体/介质转换器、嗅探器、拦截器、仿真器四合一的颠覆性设计,成为工程师应对复杂车载以太网测试的瑞士军刀。它支持双路车载/标准以太网智能转换、实时通信嗅探、硬件级数据拦截及ECU通信模拟,更通过串口命令实现全参数远程配置,赋能自动化测试流程。本文将深度解析其核心功能与实战应用场景。

Triv2025的博客 1142

在 CentOS7 上使用 docker 搭建 nacos 集群

在 Docker 容器中部署 Nacos 集群,包括 Nacos 集群使用的 MySQL 数据库也在容器内运行。集群之间的通信通过 docker network 提供的 bridge 模式。

qq_36665310的博客 1362

MacOS M芯片部署ComfyUI:从环境排雷到插件生态一站式指南

本文为MacOS M系列芯片用户提供了一份详尽的ComfyUI部署指南。文章深入剖析了因架构差异导致的常见安装报错根源,并给出了基于MPS后端的正确PyTorch安装命令。从创建纯净Python虚拟环境、分步安装依赖,到验证GPU加速,手把手指导完成部署。同时,还推荐了包括管理器、汉化在内的必备插件,以完善使用生态,帮助用户一站式解决从环境搭建到效率提升的所有问题。

weixin_29261711的博客 993

FPGA音频处理入门:手把手教你用Verilog实现I2S接收模块(附完整代码)

本文详细介绍了如何使用Verilog在FPGA上实现I2S接收模块,涵盖I2S协议原理、Verilog架构设计、完整代码实现及优化技巧。通过实战案例,帮助开发者快速掌握数字音频处理技术,适用于嵌入式音频系统开发。

weixin_30335575的博客 417

docker-compose配置redis集群搭建(三主三从分槽模式)

#docker-compose配置redis集群搭建(三主三从分槽模式) ##$ 前言 docker-compose配置redis集群.三主三从分槽模式 1.0 下载redis配置 链接:https://pan.baidu.com/s/1BFUDaI1JgENUB1NoqQbtPQ 提取码:wad1 1.1配置内容 redis.conf port 7001 pidfile /var/ru...

ve__locity的博客 1251

Eureka自我保护机制

Eureka自我保护机制 默认情况下,当eureka server在一定时间内没有收到实例的心跳,便会把该实例从注册表中删除(默认是90秒),但是,如果短时间内丢失大量的实例心跳,便会触发eureka server的自我保护机制,比如在开发测试时,需要频繁地重启微服务实例,但是我们很少会把eureka server一起重启(因为在开发过程中不会修改eureka注册中心),当一分钟内收到的心跳数大量减少时,会触发该保护机制。可以在eureka管理界面看到Renews threshold和Renews(last

Soul_Ming的博客 543

基于Docker单机部署ZooKeeper集群

Zookeeper单机部署集群配置过程(基于docker方式) 前面的文章部署zk服务,直接在裸机上部署,较为不便,现在很多服务如果不做docker化,无论在故障恢复、运维都增加很大困难,无法做到自动化部署,这种低效率的IT运营模式是比较难接受的,对于我们开发而已,必须是一键式优雅部署,所以本篇文章采用docker方式部署zk集群,可以从中对比裸机部署过程的不同以及优势 1、部署docker和...

pysense的博客 2424

基于 Verilog 的经典数字电路设计(10)三态门

三态门(Triple-State Gate)亦称 “三态输出门”、“三态门输出电路”,是一种重要的总线接口电路,具有高电平、低电平和高阻抗三种输出状态的门电路,不过我们通常在设计中比较少见。   三态指其输出既可以是一般二值逻辑电路,即正常的高电平(逻辑 1)或低电平(逻辑 0),又可以保持特有的高阻抗状态,高阻态相当于隔断状态(电阻很大,相当于开路)。

新芯设计的博客 1万+

芒果YOLO11改进44:主干Backbone篇之MobileViT::结合最新 ICLR2022 顶会|轻量通用的MobileViT结构(一)Transformer,轻量级、通用且移动友好的视觉转换

MobileViT::结合最新 ICLR2022 顶会|轻量通用的MobileViT结构(一)Transformer,轻量级、通用且移动友好的视觉转换

包括YOLOv5、YOLOv7、YOLOv8等模型改进 370

使用Docker部署redis集群

首先,我们需要准备一个 Redis 配置文件模板,这里直接使用上面提供的 redis-cluster.tmpl 内容。接下来,需要一个脚本来批量生成每个节点的配置文件。保存这个脚本为 generate-redis-conf.sh,并确保它具有可执行权限。为了确保 Redis 节点之间可以相互通信,我们需要创建一个 Docker 网络。注:如果需要外部访问,需设置cluster-announce-ip 为主机IP。表示每个主节点没有副本。当前只有三个节点,副本设置为0,如果是6个节点,则可以设置1个副本。

Mr_binM的博客 818

2025爬虫实战:某音直播间实时弹幕获取原理及源码分析

某音直播弹幕虽然没有直接挂在 DOM 上,但由于用的是西瓜播放器,弹幕是通过 JS 接口动态渲染的,这就给了我们 Hook 的机会。关键点是找到调用的位置,然后拦截并输出对象里的message字段。这个思路其实也适用于其他前端渲染的播放器,比如 B 站的 DPlayer、HLS.js、甚至很多自研播放器都有类似结构。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1811

docker 搭建zookeepr集群和kafka集群

搭建kafka集群需要先建好zookeeper集群。我们需要三个镜像,zookeeper、wurstmeister/kafka:2.12-2.0.1和sheepkiller/kafka-manager,其中sheepkiller/kafka-manager不是必须的。 下拉镜像 docker pull zookeeper docker pull wurstmeister/kafka:2....

Mrs_WuHo_O的博客 448

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

使用 Docker 部署 Spark 集群

通过以上步骤,你已经成功使用 Docker 部署了一个 Spark 集群,包括一个 Master 节点和两个 Worker 节点。快速部署:通过 Docker Compose 一键式部署,无需手动配置每个节点。资源隔离:每个节点运行在独立的容器中,资源分配清晰。易于扩展:可以轻松添加或删除 Worker 节点以适应不同的工作负载。环境一致性:所有节点使用相同的 Spark 镜像,确保环境一致。你可以根据需要调整文件中的配置,例如增加 Worker 节点的数量、调整内存和 CPU 核数等。

iku_n的博客 2008

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

docker 集群搭建及使用docker compose 搭建es集群

记录下docker 集群搭建及使用docker compose 搭建es集群的探索过程一.创建虚拟机二.配置网络三.安装docker四.Swarm配置五.搭建Portainer可视化界面 一.创建虚拟机 硬盘64G,内存24G,CPU4,网络适配器网桥,系统安装时设置root用户密码 二.配置网络 vi /etc/sysconfig/network-scripts/ ifcfg-ens33 打开编辑ifcfg-ens33文件; 将ONBOOT=no改为yes,将BOOTPROTO=dhcp改为BOOTPR

入门级选手的博客 1908

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: .Net CSharp语言中When关键字的用法
下一篇: 微服务Microservices——应用架构的未来
codinghello
博客等级 码龄25年 47粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值