从vmware到docker 02-vmware和docker的网络配置
字数 1626 2025-08-11 08:36:22
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 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容器互联
- 创建新网络:
docker network create -d bridge test-net
-d:指定网络类型(bridge/overlay/macvlan)test-net:网络名称
- 运行容器并连接到网络:
docker run -itd --name test1 --network test-net astronaut1712/dvwa
docker run -itd --name test2 --network test-net astronaut1712/dvwa
- 验证互联:
进入容器后使用ping命令测试连通性
Docker网络模式
-
bridge模式(默认)
- 创建独立的网络栈,实现容器间和容器与host间的网络隔离
- 通过Iptables实现容器访问外部网络
- 示例:
docker run -it --name test5 astronaut1712/dvwa
-
none模式
- 容器完全没有网络
- 需要用户完全自定义网络配置
- 示例:
docker run -it --net="none" --name test3 astronaut1712/dvwa
-
host模式
- 直接使用宿主机网络
- 网络性能好,但隔离性差
- 示例:
docker run -it --net="host" --name test4 astronaut1712/dvwa
-
container复用模式
- 复用指定容器的网络配置
- 示例:
docker run -it --net="container:cf7a433b6e89" --name test6 astronaut1712/dvwa
-
user-defined模式
- 用户自定义网络,支持bridge/overlay/macvlan驱动
- 创建网络:
docker network create --driver bridge new_nw - 使用网络:
docker run -it --net="new_nw" --name test9 astronaut1712/dvwa
DNS配置
- 全局配置(在
/etc/docker/daemon.json中):
{
"dns": ["114.114.114.114", "8.8.8.8"]
}
- 容器启动时配置:
-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)提供了更灵活的网络配置选项
- 理解各种网络模式的特点和配置方法,可以帮助我们更好地构建和管理虚拟化环境