序言

闲来无事,记录学习历程,交个朋友。欢迎讨论碰撞,产生好的解决方案!!!👏👏👏

背景

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

访问结果
在这里插入图片描述

更多推荐