【docker】【Swarm】【windows】docker desktop进行Swarm init时的 “bind: cannot assign requested address ”问题
背景
硬件:多台Windows主机,已安装docker desktop,主机位于搭建的局域网内。有一个主机安装了VMware和CentOS Stream镜像。
需求:利用集群,进行分布式实验
问题列举
【失败】docker desktop 的 Swarm 别碰!
docker swarm init --listen-addr 192.168.2.xxx:2377 --advertise-addr 192.168.2.xxx:2377
- 网上没有查到windows desktop 初始化init Swarm的案例
- docker desktop 无论是否开启“Use the WSL 2 based engine”,其都是运行在Linux系统上的,无法识别windows系统的物理IP。报错信息都是“bind: cannot assign requested address”
通过gpt分析得到的方案无法实现,不了解windwos docker desktop的底层运行原理,不知道如何绕过系统不互通的问题。
【失败】docker desktop enable k8s failed
docker desktop集成了kubernetes。由于网络问题,enable Kubernetes时,(显示 Ensuring node image (kindest/node:v1.30.2) 🖼 …)
手动安装kindest/node:v1.30.2,还有其他镜像后,enable Kubernetes仍然失败。
报错信息无分析价值,遂放弃。
基于纯Linux系统
之前安装过双系统,使用起来非常麻烦,也没有多余主机。
因此使用虚拟机安装CentOS镜像,只起Swarm manager的作用,不运行容器。
之后遇到的问题就是网络配置的问题。
本文记录下进行的配置操作
虚拟机搭建Swarm集群
1. 安装VMware和CentOS
略
2. CentOS安装docker
https://www.runoob.com/docker/centos-docker-install.html
备注:
sudo docker run hello-world失败,查找有效的docker镜像源
docker pull docker.m.daocloud.io/hello-world
docker tag docker.m.daocloud.io/hello-world:latest hello-world:latest
docker run hello-world
3. CentOS网络设置



端口开放
ip addr
# --> <CentOS_LAN_IP> 此时虚拟机位于LAN同一网段
firewall-cmd --permanent --add-port=2377/tcp
firewall-cmd --permanent --add-port=7946/tcp
firewall-cmd --permanent --add-port=7946/udp
firewall-cmd --permanent --add-port=4789/udp
firewall-cmd --reload
setenforce 0 # 临时关闭,CentOS的安全机制
ss -tulpn | grep 2377
CentOS 进行Swarm初始化
ip addr
# --> <CentOS_LAN_IP>
docker swarm init --listen-addr <CentOS_LAN_IP>:2377 --advertise-addr <CentOS_LAN_IP>:2377
docker node ls
docker swarm join-token worker
# --> docker swarm join --token <token_generate> <CentOS_LAN_IP>:2377
Windows desktop 加入集群

PS C:\Users\Administrator> Test-NetConnection <CentOS_LAN_IP> -Port 2377
ComputerName : <CentOS_LAN_IP>
RemoteAddress : <CentOS_LAN_IP>
RemotePort : 2377
InterfaceAlias : 以太网
SourceAddress : <Windows_LAN_IP>
TcpTestSucceeded : True
验证windows 和CentOS端口互通
docker swarm join --advertise-addr <Windows_LAN_IP> --token <token_generate> <CentOS_LAN_IP>:2377
# --> This node joined a swarm as a worker.
dokcer info
# 查看Swarm字段
# Swarm: active
# NodeID: xxxxxxx
# Is Manager: false
# Node Address: <Windows_LAN_IP>
# Manager Addresses:
# <CentOS_LAN_IP>:2377
备注:
若加入集群失败,Swarm字段显示error。可退出重启Swarm
docker swarm leave --force
# --> Node left the swarm.
docker info
# Swarm:inactive
CentOS验证集群加入结果
[root@localhost ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
sxxxxx docker-desktop Ready Active 27.1.1
ahxxxxxx* localhost.localdomain Ready Active Leader 29.1.2
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)