从vmware到docker 02-vmware和docker的网络配置
字数 1626 2025-08-11 08:36:22

VMware与Docker网络配置详解

VMware网络配置

VMware网络工作模式

VMware提供了三种网络工作模式:

  1. Bridged(桥接模式)

    • 虚拟机桥接网络的网关默认和物理网卡的网关相同
    • 虚拟操作系统像是局域网中的一台独立主机,可以访问网内任何机器
    • 需要手动配置IP地址、子网掩码,且必须和宿主机处于同一网段
    • 网络模型:虚拟机 ↔ 物理网卡 ↔ 外部网络
  2. NAT(网络地址转换模式)

    • 虚拟系统借助NAT功能通过宿主机网络访问公网
    • TCP/IP配置由VMnet8(NAT)虚拟网络的DHCP服务器提供
    • 默认情况下虚拟机之间可以通信,但宿主机无法访问NAT隔离的私网
    • 勾选"将主机虚拟适配器连接到此网络"后,宿主机可以与虚拟机通信
  3. Host-only(仅主机模式)

    • 全封闭网络,只能访问主机和其他虚拟机
    • 主机和虚拟机通过VMware Network Adepter VMnet1虚拟网卡通信
    • 默认情况下虚拟机无法访问互联网
    • 勾选"将主机虚拟适配器连接到此网络"会创建虚拟网卡

VMware虚拟交换机与虚拟网卡

  • 虚拟交换机

    • VMnet0:用于桥接网络
    • VMnet1:用于Host-only网络
    • VMnet8:用于NAT网络
  • 虚拟网卡

    • VMware Network Adepter VMnet1:用于Host-only通信
    • VMware Network Adepter VMnet8:用于NAT通信
    • 桥接模式直接连接物理网卡

Host-only模式访问外网配置

  1. 确认虚拟网卡Host-only的网卡名称(VMnet1)和网段(如192.168.15.0)
  2. 设置本地物理网卡属性,共享给Host-only虚拟网卡
  3. VMnet1网卡IP会变成192.168.137.1
  4. 将VMnet1还原为原网段(如192.168.15.1)
  5. 设置虚拟机IP为192.168.15.2,网关和DNS指向192.168.15.1
  6. 重启后Host-only模式即可连接互联网

Docker网络配置

Docker容器命名

创建容器时可自动命名,也可使用--name参数自定义:

docker run -d -P --name {自定义容器名} {镜像名}

Docker端口映射

  • -P:容器内部端口随机映射到主机端口

    docker run -d -P astronaut1712/dvwa
    
  • -p:容器内部端口绑定到指定主机端口

    docker run -d -p 5000:5000 astronaut1712/dvwa
    

绑定特定IP:

docker run -d -p 127.0.0.1:5001:5000 astronaut1712/dvwa

绑定UDP端口:

docker run -d -p 5000:5000/udp astronaut1712/dvwa

查看端口绑定:

docker port

Docker容器互联

  1. 创建新网络:
docker network create -d bridge test-net
  • -d:指定网络类型(bridge/overlay/macvlan)
  • test-net:网络名称
  1. 运行容器并连接到网络:
docker run -itd --name test1 --network test-net astronaut1712/dvwa
docker run -itd --name test2 --network test-net astronaut1712/dvwa
  1. 验证互联:
    进入容器后使用ping命令测试连通性

Docker网络模式

  1. bridge模式(默认)

    • 创建独立的网络栈,实现容器间和容器与host间的网络隔离
    • 通过Iptables实现容器访问外部网络
    • 示例:
      docker run -it --name test5 astronaut1712/dvwa
      
  2. none模式

    • 容器完全没有网络
    • 需要用户完全自定义网络配置
    • 示例:
      docker run -it --net="none" --name test3 astronaut1712/dvwa
      
  3. host模式

    • 直接使用宿主机网络
    • 网络性能好,但隔离性差
    • 示例:
      docker run -it --net="host" --name test4 astronaut1712/dvwa
      
  4. container复用模式

    • 复用指定容器的网络配置
    • 示例:
      docker run -it --net="container:cf7a433b6e89" --name test6 astronaut1712/dvwa
      
  5. user-defined模式

    • 用户自定义网络,支持bridge/overlay/macvlan驱动
    • 创建网络:
      docker network create --driver bridge new_nw
      
    • 使用网络:
      docker run -it --net="new_nw" --name test9 astronaut1712/dvwa
      

DNS配置

  1. 全局配置(在/etc/docker/daemon.json中):
{
  "dns": ["114.114.114.114", "8.8.8.8"]
}
  1. 容器启动时配置:
  • -h HOSTNAME:设定容器主机名
  • --dns=IP_ADDRESS:添加DNS服务器
  • --dns-search=DOMAIN:设定搜索域

示例:

docker run -it --rm test10 cat etc/resolv.conf

总结

VMware和Docker都提供了多种网络模式,满足不同场景需求:

  • VMware的三种模式(Bridged/NAT/Host-only)适用于虚拟机与宿主机和外部网络的连接
  • Docker的五种网络模式(bridge/host/none/container/user-defined)提供了更灵活的网络配置选项
  • 理解各种网络模式的特点和配置方法,可以帮助我们更好地构建和管理虚拟化环境
VMware与Docker网络配置详解 VMware网络配置 VMware网络工作模式 VMware提供了三种网络工作模式: Bridged(桥接模式) 虚拟机桥接网络的网关默认和物理网卡的网关相同 虚拟操作系统像是局域网中的一台独立主机,可以访问网内任何机器 需要手动配置IP地址、子网掩码,且必须和宿主机处于同一网段 网络模型:虚拟机 ↔ 物理网卡 ↔ 外部网络 NAT(网络地址转换模式) 虚拟系统借助NAT功能通过宿主机网络访问公网 TCP/IP配置由VMnet8(NAT)虚拟网络的DHCP服务器提供 默认情况下虚拟机之间可以通信,但宿主机无法访问NAT隔离的私网 勾选"将主机虚拟适配器连接到此网络"后,宿主机可以与虚拟机通信 Host-only(仅主机模式) 全封闭网络,只能访问主机和其他虚拟机 主机和虚拟机通过VMware Network Adepter VMnet1虚拟网卡通信 默认情况下虚拟机无法访问互联网 勾选"将主机虚拟适配器连接到此网络"会创建虚拟网卡 VMware虚拟交换机与虚拟网卡 虚拟交换机 : VMnet0:用于桥接网络 VMnet1:用于Host-only网络 VMnet8:用于NAT网络 虚拟网卡 : VMware Network Adepter VMnet1:用于Host-only通信 VMware Network Adepter VMnet8:用于NAT通信 桥接模式直接连接物理网卡 Host-only模式访问外网配置 确认虚拟网卡Host-only的网卡名称(VMnet1)和网段(如192.168.15.0) 设置本地物理网卡属性,共享给Host-only虚拟网卡 VMnet1网卡IP会变成192.168.137.1 将VMnet1还原为原网段(如192.168.15.1) 设置虚拟机IP为192.168.15.2,网关和DNS指向192.168.15.1 重启后Host-only模式即可连接互联网 Docker网络配置 Docker容器命名 创建容器时可自动命名,也可使用 --name 参数自定义: Docker端口映射 -P :容器内部端口随机映射到主机端口 -p :容器内部端口绑定到指定主机端口 绑定特定IP: 绑定UDP端口: 查看端口绑定: Docker容器互联 创建新网络: -d :指定网络类型(bridge/overlay/macvlan) test-net :网络名称 运行容器并连接到网络: 验证互联: 进入容器后使用ping命令测试连通性 Docker网络模式 bridge模式(默认) 创建独立的网络栈,实现容器间和容器与host间的网络隔离 通过Iptables实现容器访问外部网络 示例: none模式 容器完全没有网络 需要用户完全自定义网络配置 示例: host模式 直接使用宿主机网络 网络性能好,但隔离性差 示例: container复用模式 复用指定容器的网络配置 示例: user-defined模式 用户自定义网络,支持bridge/overlay/macvlan驱动 创建网络: 使用网络: DNS配置 全局配置(在 /etc/docker/daemon.json 中): 容器启动时配置: -h HOSTNAME :设定容器主机名 --dns=IP_ADDRESS :添加DNS服务器 --dns-search=DOMAIN :设定搜索域 示例: 总结 VMware和Docker都提供了多种网络模式,满足不同场景需求: VMware的三种模式(Bridged/NAT/Host-only)适用于虚拟机与宿主机和外部网络的连接 Docker的五种网络模式(bridge/host/none/container/user-defined)提供了更灵活的网络配置选项 理解各种网络模式的特点和配置方法,可以帮助我们更好地构建和管理虚拟化环境