【docker】Windows和Vmware和docker容器IP互相访问
序言
闲来无事,记录学习历程,交个朋友。欢迎讨论碰撞,产生好的解决方案!!!👏👏👏
背景
Windows主机IP(局域网):192.168.200.1
WMware虚拟机IP(Net网络):10.10.10.10
docker容器(nacos镜像):10.10.10.140
需要实现windows和docker容器的双向通信(因为想要给每一个容器一个固定的虚拟IP所以采用 ipvlan模式)
VMware配置Net网络
添加一个网络没有Net网络,就【添加网络】新增。可以按照我的来配置,也可以自己配置用局域网网段就好


网关IP设置 10.10.10.2
windows可以看到有一个新的网卡
ipconfig

虚拟机设置Net网络

虚拟机配置静态 IP
我的虚拟机是镜像是ubuntu,可以参考网上相关资料配置IP。(可以先在虚拟机配置桥接模式,自动分配IP,再用xshell连接,好编辑一点)
按照你的Net网卡来配置
root@master:~/nacos# cat /etc/netplan/01-netcfg.yaml
network:
version: 2
ethernets:
ens33:
dhcp4: no
addresses:
- 10.10.10.10/24
gateway4: 10.10.10.2
nameservers:
addresses: [8.8.8.8, 114.114.114.114]
这里也需要配置不然重启就会失效,会自动创建网卡
root@master:~/nacos# cat /etc/netplan/50-cloud-init.yaml
network:
ethernets:
ens33:
dhcp4: true
version: 2
windows访问虚拟机
ping 10.10.10.10

安装 Docker
网上找对应资料
国内无法拉取镜像,我的建议是配置代理毕竟安全上网也需要代理
docker配置代理
root@master:~/nacos# cat /etc/systemd/system/docker.service.d/proxy.conf
[Service]
Environment=“HTTP_PROXY=http://192.168.18.103:7890”
Environment=“HTTPS_PROXY=http://192.168.18.103:7890”
Environment=“NO_PROXY=localhost,127.0.0.1”
配置镜像加速也是可以的
Docker创建网卡
创建一个ipvlan类型的网卡,名称dev
docker network create -d ipvlan --subnet=10.10.10.0/24 --gateway=10.10.10.2 -o parent=ens33 -o ipvlan_mode=l2 dev
查看网卡信息
docker network inspect dev

创建容器
我用Nacos来展示因为Nacos有网络组件。采用docker compos比较方便管理容器,这里用的网卡就是刚刚创建的
编写docker-compos.yml
version: '3.8'
services:
nacos:
image: nacos/nacos-server:v2.3.2
container_name: nacos
restart: unless-stopped
user: root
environment:
- MODE=standalone
- NACOS_AUTH_ENABLE=true
- NACOS_AUTH_IDENTITY_KEY=admin
- NACOS_AUTH_IDENTITY_VALUE=123456
- NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789
- JVM_XMS=512m
- JVM_XMX=512m
- JVM_XMN=256m
ports:
- "8848:8848"
- "9848:9848"
volumes:
- /root/nacos/standalone/logs:/home/nacos/logs
- /root/nacos/standalone/data:/home/nacos/data
networks:
dev:
ipv4_address: 10.10.10.140
networks:
dev:
external: true
name: dev
启动容器
docker compose up -d

这个时候再看dev网卡的详情就会有容器信息
docker network inspect dev

windows访问容器
访问容器 IP
ping 10.10.10.140

容器访问Windows
容器IP10.10.10.140,windows 192.168.200.1,因为有VMNet8的原因,Windows可以访问容器,但是容器无法访问windows。
解决方案
在Linux虚拟机添加路由
# 添加到192.168.220.0/24网络的路由
sudo ip route add 192.168.220.0/24 via 10.10.10.2 dev ens33
# 永久生效(Ubuntu/Debian)
echo "192.168.220.0/24 via 10.10.10.2 dev ens33" | sudo tee -a /etc/netplan/01-netcfg.yaml
sudo netplan apply
# 或者(CentOS/RHEL)
echo "192.168.220.0/24 via 10.10.10.2 dev ens33" | sudo tee -a /etc/sysconfig/network-scripts/route-ens33
sudo systemctl restart network
在Windows机器添加回程路由
# 添加到Docker容器网络的路由
route add 10.10.10.0 mask 255.255.255.0 192.168.220.1
访问结果

更多推荐

所有评论(0)