Docker多主机互联(Ubuntu)

Ubuntu-Docker安装和使用 apt update如果出现错误:fi’解决:重新安装libappstream4备份原source.list文件删除source.list重新创建,写入阿里源根据系统不同版本选择对应的源,否则可能出现无法认证等错误信息。 阅读详情

docker多主机互联的方式有很多,docker自带的方式有Overlay、Macvlan,第三方插件有Pipework、Flannel、Calico等,此外,一般还需要借助相关的软件才能完成多主机互联。本文使用Overlay和Consul实现多主机互联。Consul是开源的服务注册、发现、治理工具。

1 查看网络配置

# 输入ifconfig命令查看网卡
# (1)Master主机网卡名称是ens33,IP地址192.168.108.133
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.108.133  netmask 255.255.255.0  broadcast 192.168.108.255
        
# (2)Node1主机网卡名称是ens33,IP地址192.168.108.131
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.108.131  netmask 255.255.255.0  broadcast 192.168.108.255

主机软件安装配置

主机名ip地址网卡名软件
master192.168.108.133ens33Docker、Consul
node1192.168.108.131ens33Docker

2 修个Docker启动配置文件

注意:修改之前一定要备份默认配置文件,如果出现问题还能恢复。

两个主机都需要修改。

2.1 旧方法(不推荐)

(1)进入目录

# docker的启动配置文件是docker.service
cd /lib/systemd/system

(2)修改配置文件

# 使用vim编辑docker.service
sudo vim docker.service

# 将文件中的ExecStart修改内容如下,添加了--cluster-store和--cluster-advertise两个参数
# 注意IP地址和端口号
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --cluster-store=consul://192.168.108.133:8500 --cluster-advertise=ens33:2375

(3)重启docker

# 加载配置文件
sudo systemctl daemon-reload
# 重启docker
sudo systemctl restart docker
# 查看docker启动状态
sudo systemctl status docker

2.2 新方法(推荐)

编辑文件

# master节点配置

# 编辑daemon.json文件
vim /etc/docker/daemon.json


# 添加内容如下
{
    // consul地址
    "cluster-store": "consul://192.168.108.133:8500",
    // master宿主机地址
    "cluster-advertise": "192.168.108.133:2375"
}

# node1节点配置

# 编辑daemon.json文件
vim /etc/docker/daemon.json


# 添加内容如下
{
    // consul地址
    "cluster-store": "consul://192.168.108.133:8500",
    // node1宿主机地址
    "cluster-advertise": "192.168.108.131:2375"
}

3 在master安装配置Consul

3.1 使用docker安装

方法1(不推荐)

在master(192.168.108.133)节点上安装Consul。这种方法存在的问题是容器重启后创建的overlay网桥会丢失。

# docker参数配置
# --name:容器名称
# --restart:设置开机启动,always开机自启
# -h:节点名称,集群中会用到
# -p:映射端口
# -v:映射配置目录
# consul的相关配置参数在集群中会用到
sudo docker run -itd \
    --name consul-container \
    --restart=always \
    -h consul-maser \
    -p 8500:8500 \
    consul:1.10.0

方法2(推荐)

# 创建容器
sudo docker run -itd \
--restart=always \
--name=consul-master \
-p 8500:8500 \
-p 8300:8300 \
-p 8301:8301 \
-p 8302:8302 \
-p 8600:8600 \
-e CONSUL_DATA_DIR='/consul/data' \
-e CONSUL_CONFIG_DIR='/consul/config' \
-v /home/consul/conf/:/consul/conf/ \
-v /home/consul/data/:/consul/data/ \
consul:1.15.0 agent -server -bootstrap -ui -node=master -client='0.0.0.0'


# 说明

(1)端口说明:
8300:replication、leader farwarding的端口
8301:lan cossip的端口
8302:wan gossip的端口
8500:web ui界面的端口
8600:使用dns协议查看节点信息的端口

(2)consul agent命令说明: 
-server: 表示以server身份启动,默认是client。
-ui: 开启网页可视化管理界面
-node: 设置节点名称,注意每个节点的名称必须唯一不能重复
-bootstrap: 控制server是否在bootstrap模式,在一个数据中心中只能有一个server处于bootstrap模式,当一个server处于 bootstrap模式时,可以自己选举为server-leader
-client: 设置外部连接的地址,0.0.0.0表示外网全部可以连接

3.2 使用原生的consul安装

(1)下载consul

# consul-1.10.0的Linux版本下载
wget https://releases.hashicorp.com/consul/1.10.0/consul_1.10.0_linux_amd64.zip

# 其他版本
https://releases.hashicorp.com/consul/

(2)安装consul

# 创建在“/usr/local/”consul-1.10.0目录
sudo mkdir /usr/local/consul-1.10.0

# 解压consul_1.10.0_linux_amd64.zip,里面只有一个consul文件
sudo unzip consul_1.10.0_linux_amd64.zip

# 将consul文件复制到“/usr/bin”
sudo cp consul_1.10.0_linux_amd64/consul /usr/local/consul-1.10.0

# 给“consul”设置权限(所有用户可执行)
# 参数a是所有用户,参数x是可执行
sudo chmod a+x /usr/local/consul-1.10.0/consul

# 在“/usr/bin”目录下为consul创建软连接,这样可以直接启动
sudo ln /usr/local/consul-1.10.0/consul /usr/local/bin/consul

(3)命令启动consul

使用nohup(no hang up,不挂起)命令,可用于在系统后端不挂起执行命令,退出终端后不会挂起程序。

# 启动consul
sudo nohup consul agent \
    -server \
    -bootstrap \
    -ui \
    -bootstrap-expect=1 \
    -data-dir=/usr/local/consul-1.10.0/data/ \
    -bind=192.168.108.133 \
    -client=0.0.0.0

# 查看consul启动情况
sudo netstat -natp | grep consul

# 返回值如下
# 8500是UI页面的端口
tcp        0      0 192.168.108.133:8300     0.0.0.0:*               LISTEN      2138/consul         
tcp        0      0 192.168.108.133:8301     0.0.0.0:*               LISTEN      2138/consul         
tcp        0      0 192.168.108.133:8302     0.0.0.0:*               LISTEN      2138/consul         
tcp        0      0 192.168.108.133:57028    192.168.108.133:8300     ESTABLISHED 2138/consul         
tcp        0      0 192.168.108.133:8300     192.168.108.133:57028    ESTABLISHED 2138/consul         
tcp6       0      0 :::8500                 :::*                    LISTEN      2138/consul         
tcp6       0      0 :::8600                 :::*                    LISTEN      2138/consul         
tcp6       0      0 192.168.108.133:8500     192.168.108.133:57652    ESTABLISHED 2138/consul

(4)文件启动

在“/usr/local/consul-1.10.0/”目录下新建start-consul.sh文件

# 进入"/usr/local/consul-1.10.0/"
cd /usr/local/consul-1.10.0/

# 新建文件
sudo touch start-consul.sh

# 编辑文件内容
sudo vim start-consul.sh

# 添加可执行权限
sudo chmod +x start-consul.sh

# 执行start-consul.sh文件
./start-consul.sh

文件"start-consul.sh"内容如下:

#!/bin/bash
sudo nohup consul agent -server -bootstrap -ui -bootstrap-expect=1 -data-dir=/usr/local/consul-1.10.0/data/ -bind=192.168.108.133 -client=0.0.0.0

3.3 访问consul

(1)访问consul

# consul地址如下
http://192.168.108.133:8500/

(2)截图

进入后截图

 

4 在master创建网桥

注意:在master节点中使用创建网桥即可,在node1上会自动同步网桥。

# 网桥名称是overlay-cluster
sudo docker network create --driver overlay --subnet=10.10.0.0/16 --gateway=10.10.0.1 overlay-cluster

# 查看网桥
sudo docker network ls

# 查看网桥的详细配置
sudo docker network inspect overlay-cluster

5 使用alpine测试

(1)创建容器

# 分别在两台主机上,下载alpine
sudo docker pull alpine:3.13.0

# 注意添加网桥
# 在master(192.168.108.133)节点运行
sudo docker run -itd --name alpine-master --net overlay-cluster alpine:3.13.0 /bin/sh

# 在master(192.168.108.131)节点运行
sudo docker run -itd --name alpine-node1 --net overlay-cluster alpine:3.13.0 /bin/sh

(2)测试连接,也可以在master测试

# 进入容器alpine-node1
sudo docker exec -it alpine-node1 /bin/sh

# 在容器中测试
ping -c 4 alpine-master

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

相关推荐

Ubuntu16.04多主机集群上手动部署Kubernetes,配置docker私有registry,配置Kubernetes-dashboard WEB ui

Ubuntu16.04多主机集群上手动部署Kubernetes环境,配置Kubernetes-dashboard主要流程: - 部署etcd集群 - 部署K8s Master - 配置flannel服务 - 部署K8s Node - 部署DNS - 部署kubernetes-Dashboard web ui 部署私有docker registry解决google镜像不能使用问题

kingwmk的博客 5146

最详细的ubuntu 安装 docker教程,文末获取实用干货大礼包!

Docker是一种流行的容器化平台,它能够简化应用程序的部署和管理。本文将介绍在Ubuntu操作系统上安装Docker的步骤,以便我们可以开始使用Docker来构建和运行容器化应用程序。

Tester_muller的博客 9万+

【Docker】Ubuntu安装Docker

1 安装Docker 安装Docker有三种方法,这里只用repository安装,更详细的安装方法可以看官方文档。 1.1 添加repository 首先更新apt: sudo apt-get update 安装一些包让apt可以通过https使用repository: sudo apt-get install \ apt-transport-https \ ca-certif...

widiot的博客 9949

Ubuntu中docker的安装和使用

包括在ubuntu中docker的安装以及其他详细使用方法

urnotlanxi的博客 1万+

ubuntu安装docker

网络连接失败,看来只能自己创建镜像了。

1258

ubuntu环境下docker容器详细安装使用

本文记录自己的安装过程以及Docker命令的使用记录

weixin_45631738的博客 2万+

使用weave实现跨主机docker容器互联

关于weave的原理不做细致的说明,如果想了解weave可以登陆官网:https://www.weave.works/ In this post,使用阿里云3台ECS服务器进行weave搭建,并测试搭建weave后,跨主机docker容器的连通性。 场景:10.162.204.252 node110.171.31.181 node210.171.19.139 node3 一、在...

weixin_34122548的博客 259

多主机Docker容器的VLAN划分与服务器

VLAN是一种逻辑上的网络划分技术,可以将一个物理网络划分为多个虚拟网络,使得不同的虚拟网络之间可以相互隔离和通信。使用不同的VLAN接口和Docker网络,我们可以将容器划分为逻辑上独立的网络,并且具有不同的网络访问权限。通过将容器连接到不同的VLAN,我们可以实现容器之间的隔离,并控制它们的网络访问权限。这将在vlan_net网络中创建一个名为container1的容器,并将其连接到VLAN接口。您可以根据需要创建更多的容器,并将它们连接到相同的VLAN网络以实现容器之间的通信。

DpgrMl的博客 360

docker swarm 集群及多主机overlay网络测试

docker的swarm集群已经支持多主机的overlay网络,而且目前测试下来发现安装及配置非常方便,跟k8s相比,安装及配置要轻松好多。 测试环境 使用2台虚拟机来测试,操作系统为ubuntu 16.04.04,系统自带内核为4.2,注意overlay需要3.16以上的内核版本。 主机名 IP 备注 ubuntu1 192.168.12.121 manger ubuntu2 192.168...

Poor - Because you have no ambition 3255

用LightRAG+Ollama搭建本地知识库:从文档上传到智能问答的完整流程

本文详细介绍了如何利用LightRAG与Ollama构建企业级本地知识库,涵盖从文档预处理到智能问答的完整流程。通过实战案例展示,该方案能高效处理海量文档,实现语义搜索与知识图谱关联分析,显著提升信息检索效率。特别适合金融、医疗等领域的技术团队快速搭建智能知识管理系统。

weixin_42535461的博客 192

详解Nacos集群搭建

在我们日常的开发当中,用的都是单点Nacos,这种模式,我们自己开发测试玩一玩还可以,但是到了企业的生产环境之下,你还这么玩的话,那肯定是要出大问题了。因为在企业当中,我们更加强调的是高可用,所以在企业的生产环境下,Nacos一定要做成个集群。

博客 1万+

Windows安装 WSL2、Ubuntu 、docker(详细步骤 , 弃用 docker desktop )

在现代软件开发领域,容器化技术已经成为提升应用部署效率和环境一致性的关键手段。Docker 作为一款卓越且被广泛应用的容器化平台,凭借其独特的技术架构,允许开发者将应用程序及其所需的全部依赖项,完整地打包进一个高度可移植的容器中。这一创新的技术方案,使得应用无论部署在何种基础环境,无论是本地开发机、测试服务器,还是复杂的生产集群,都能以高度一致的方式稳定运行,极大地降低了因环境差异导致的应用故障风险。

深耕 Java 后端与企业级软件架构设计,专注微服务、分布式系统、大模型 AI 应用架构落地。 1万+

深交所 vs 上交所:Level-2实时数据推送规则详解与策略适配指南

本文深度解析沪深Level-2实时数据推送规则的关键差异,包括逐笔成交、逐笔委托和10档行情接口的处理逻辑。针对高频交易策略,详细对比上交所与深交所在数据推送机制、时间戳处理及委托队列解析等方面的差异,并提供具体的策略适配方案和性能优化建议,帮助量化投资者提升跨市场交易稳定性。

weixin_27310417的博客 1165

Ubuntu安装docker

1.先卸载旧版,如果没有的话,就不用执行了,直接第二步。 2.在终端输入 3.安装证书 4.写入软件源信息 5.安装 中途出现问题的话,使用 sudo apt-get update 试试6.启动docker 7.安装工具 8.重启docker 9.测试是否成功,输入sudo docker run hello-world 显示以下信息则成功。 参考:ubuntu 安装 docker 详细步骤_tiahaole的博客-优快云博客_ubuntu安装docker.........

故里2130 9万+

决策大模型与生成式大模型有何不同?一文拆解技术框架与落地路径

大模型技术正从内容生成走向复杂场景的智能决策。与生成式大模型拟合概率分布不同,决策大模型以序列决策为核心,融合强化学习机制,在动态环境中感知反馈、持续修正行动路径。其技术框架涵盖语义理解、规划推理与闭环决策,并通过世界模型进行低成本仿真推演,显著提升供应链调度、物流排程等场景的应对效率。实际落地时需结合传统优化算法与人工兜底,构建“语义先导+数值寻优”的分层架构,才能平衡精度与稳定性。这篇内容拆解决策大模型的技术组成、落地路径与常见误区,为企业智能化转型提供可参考的实践框架。

weixin_29057163的博客 188

IROS 2025机器人技术解析:从诡异设计到硬核应用

机器人技术正从传统的结构化环境应用,迈向复杂非结构化场景的深度交互。其核心原理在于通过仿生设计、多模态感知与智能控制算法,赋予机器人类似生物的适应性与交互能力。这一技术演进的价值在于突破传统机器人在极端环境、精密操作和自然交互中的瓶颈。例如,结合深度强化学习的全身动力学控制,使机器人能在废墟、管道等复杂地形中自主导航;而软体机器人技术则通过材料变形实现安全、柔顺的抓取操作。这些技术最终服务于极端环境巡检、精密装配和高端陪护等刚性应用场景,推动机器人从功能实现迈向与环境、人进行深度、智能交互的新阶段。

weixin_34006468的博客 450

1 ubuntu18 docker配置与安装 镜像加速配置

ubuntu 18下载配置docker详细流程并成功运行第一个容器 附图详解

peter6768的博客 1347

DaVinci配置DID之二:工具链配置

本系列主要基于DaVinCi工具链来展开具体DID读写的配置以及最终实现。1,CDD准备2,工具链配置3,代码实现4,验证结果本文讲述流程2话不多说,走你~博主也是AutoSar小白,如果哪里表达的有问题,还请大佬们指点指点哈。接下来,让我们在下章关于代码具体实现的博文再相会哈~

weixin_48498880的博客 5741

【Docker】ubuntu中 Docker的使用

Dockerfile是一个文本文件,其中包含了一系列指令,这些指令定义了如何从基础镜像创建一个新的Docker镜像。通过执行。

magic_ll的博客 5528

【机器人学】常用的小车底盘运动学模型推导(附C++代码)

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对小车底盘运动学模型介绍做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容对于小车的分析,仅仅考虑XY轴的线速度和Z轴的角速度,不考虑和横滚和俯仰的速度,【防盗标记–盒子君hzj】也不考虑Z轴的高度变化【即:车底盘的运动可以用三个独立变量来描述:x轴平动、y轴平动、yaw轴转动】

qq_35635374的博客 1932

欺诈文本分类微调(一):基座模型选型

通义千问Qwen2具有0.5B、1.5B、7B、72B等一系列参数大小不等的模型,我们需要做的是从大到小依次测试每个模型的能力,找到满足自己需要的最小参数模型。依1.5B和1.5B-Instruct的主要区别:按照官方文档,前者是预训练模型,后者是经过指令微调的模型。

golfxiao的专栏 2655

ubuntu20.04 安装docker,docker-compose

ubuntu20.04 安装docker,docker-compose

资深系统架构,深耕高并发研发与 AI 大模型工程化落地。技术栈以 Python (AI/NLP/RAG/Agent) 与 Golang (高并发架构) 为双核心,兼具 PHP 大型应用经验。专注算法落地、复杂系统设计及团队技术赋能 6436

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Ubuntu-25.10安装Docker

本文详细介绍了在Ubuntu25.10版本系统上安装和配置Docker的完整流程。主要内容包括:卸载旧版本Docker、添加Docker官方GPG密钥和软件源、安装Docker相关软件包、验证安装结果。重点讲解了Docker镜像源配置方法,提供了多个国内镜像地址,以及如何设置非root用户管理Docker和配置开机自启动。文章还附带了官方安装手册和国内镜像源参考链接,为Ubuntu用户提供了一套完整的Docker安装配置指南。

Hunter_H_L的博客 1560

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Docker两个容器互联

Docker两个容器互联操作

qq_54650406的博客 3520

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Ubuntu 安装docker docker-compose

docker-compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过 docker-compose,你可以使用 YAML 文件来配置应用程序的服务、网络和卷。它简化了复杂应用的配置和启动过程,使得管理和部署多个相互依赖的容器变得非常简单。默认情况下,只有 root 用户或 docker 用户组的成员才能运行 Docker 命令。添加 Docker 的官方 GPG 密钥。将当前用户加入 docker 用户组。验证 Docker 是否安装成功。安装docker-compose。

hudeyong926的专栏 2246

Ubuntu系统下安装docker以及docker-compose(CPU版)

Ubuntu系统下安装docker以及docker-compose(CPU版)

IT菜鸟 2111
上一篇: 查看局域网中的ip
下一篇: Python简单使用蓝本
MasonYyp
博客等级 码龄9年 301粉丝 297原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值