首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构建具有复杂网络配置的Virtualbox的对接环境

构建具有复杂网络配置的Virtualbox的对接环境
EN

Stack Overflow用户
提问于 2020-10-16 12:02:37
回答 2查看 315关注 0票数 7

我有一个由3个应用程序组成的环境,两个在Windows中运行,一个在Debian中运行。

出于测试目的,我已经用VirtualBox VM (用于运行Debian )在1台PC (运行Windows10)中构建了环境。

以下是详细的网络配置:

主机PC (只使用2 VirtualBox主机适配器):

代码语言:javascript
复制
Ethernet adapter VirtualBox Host-Only Network:

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::ec0c:3c16:4f85:1a5e%12
   IPv4 Address. . . . . . . . . . . : 192.168.1.11
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   IPv4 Address. . . . . . . . . . . : 192.168.1.12
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   IPv4 Address. . . . . . . . . . . : 192.168.1.13
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   IPv4 Address. . . . . . . . . . . : 192.168.1.14
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   IPv4 Address. . . . . . . . . . . : 192.168.1.15
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   IPv4 Address. . . . . . . . . . . : 192.168.1.21
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   IPv4 Address. . . . . . . . . . . : 192.168.1.22
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   IPv4 Address. . . . . . . . . . . : 192.168.1.23
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   IPv4 Address. . . . . . . . . . . : 192.168.1.24
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   IPv4 Address. . . . . . . . . . . : 192.168.1.25
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   IPv4 Address. . . . . . . . . . . : 192.168.1.26
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   IPv4 Address. . . . . . . . . . . : 192.168.1.31
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   IPv4 Address. . . . . . . . . . . : 192.168.1.32
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   IPv4 Address. . . . . . . . . . . : 192.168.1.33
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   IPv4 Address. . . . . . . . . . . : 192.168.1.34
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   IPv4 Address. . . . . . . . . . . : 192.168.1.123
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . :

Ethernet adapter VirtualBox Host-Only Network #2:

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::5d7:813f:a9a:865d%16
   IPv4 Address. . . . . . . . . . . : 192.168.1.122
   Subnet Mask . . . . . . . . . . . : 255.255.255.248
   Default Gateway . . . . . . . . . :

VirtualBox VM网络配置:

/etc/网络/接口:

代码语言:javascript
复制
auto lo
iface lo inet loopback

auto eth1
iface eth1 inet static
  address 192.168.1.120
  netmask 255.255.255.0
  gateway 192.168.1.1

auto eth2
allow-hotplug eth2
iface eth2 inet static
  address 192.168.1.10
  netmask 255.255.255.0
  gateway 192.168.1.1

auto eth2:0
iface eth2:0 inet static
  address 192.168.1.20
  netmask 255.255.255.0

auto eth2:1
iface eth2:1 inet static
  address 192.168.1.30
  netmask 255.255.255.0

Ifconfig输出:

代码语言:javascript
复制
eth0      Link encap:Ethernet  HWaddr 08:00:27:a8:08:8b  
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          ...

eth1      Link encap:Ethernet  HWaddr 08:00:27:41:27:73  
          inet addr:192.168.1.120  Bcast:192.168.1.255  Mask:255.255.255.0
          ...

eth2      Link encap:Ethernet  HWaddr 08:00:27:0d:6b:54  
          inet addr:192.168.1.10  Bcast:192.168.1.255  Mask:255.255.255.0
          ...

eth2:0    Link encap:Ethernet  HWaddr 08:00:27:0d:6b:54  
          inet addr:192.168.1.20  Bcast:192.168.1.255  Mask:255.255.255.0
          ...

eth2:1    Link encap:Ethernet  HWaddr 08:00:27:0d:6b:54  
          inet addr:192.168.1.30  Bcast:192.168.1.255  Mask:255.255.255.0
          ...

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          ...

以下是当前环境下的一些网络交互流程:

  • App1在VM中运行并创建多个套接字服务器: IP 192.168.1.10,192.168.1.20,192.168.1.30端口1448 -Listening IP 192.168.1.120端口1449上的-Listening
  • App2在主机中运行并创建多个连接: 192.168.1.123端口1448中的-create套接字服务器 VM中的-connect到套接字服务器: 192.168.1.10端口1448 (使用绑定ip = 192.168.1.11) VM中的-connect到套接字服务器: 192.168.1.20端口1448 (使用绑定ip=192.168.1.12) ..。 VM中的-connect到套接字服务器: 192.168.1.120端口1449
  • App3在主机中运行并创建多个连接: -connect到套接字服务器192.168.1.123端口1448 (App2) -connect到套接字服务器192.168.1.120端口1449 (App1)

这个环境现在运行良好,但是在阅读了关于Docker的文章之后,我计划用使用Docker来代替VirtualBox VM,以减少内存的使用。

我成功地建立了Debian形象,安装库等.

但是,我不知道如何在Docker中安装网络,使其具有与上述VirtualBox VM配置类似的功能。一些令人困惑的观点:

  • 我们是否可以使用Docker创建类似于“以太网适配器VirtualBox主机专用网络”的网络接口?
  • 如果我们不能创建这样的网络接口,在环境中只保留这2 VirtualBox主机适配器是可以的。但我不知道如何将这些网络接口“连接”到Docker容器中?
  • 似乎不可能为码头集装箱分配静态IP地址,对吗? (这没什么用:将静态IP分配给Docker容器)
  • 似乎也不可能将多个IP地址分配给码头集装箱,对吗?

因此,使用Docker建立上述环境似乎非常困难。

如果有人仍然能够使用Docker构建环境,请帮助指出一些方向。

非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-02 10:39:59

你问的前三个问题是用macvlan网络解决的。您将有容器直接连接到您的网络,就像VM的容器一样。

代码语言:javascript
复制
version: "2.1"

services:
  nginx1:
    image: nginx
    networks:
      network_1:
        ipv4_address: 10.1.1.115
  nginx2:
    image: nginx
    networks:
      network_1:
        ipv4_address: 10.1.1.116


networks:
  network_1:
    driver: macvlan
    driver_opts:
      parent: enp52s0  # Your network interface name
    ipam:
      driver: default
      config:
        - subnet: 10.1.1.0/24
          gateway: 10.1.1.1

在本例中,我声明了一个名为network_1的macvlan网络,它连接到enp52s0网络接口上。两个nginx容器使用该网络,每个容器都发布自己的静态IP。

现在,如果您想为每个容器分配多个IP,事情就开始变得混乱起来。要分配额外的地址,您需要一个额外的网络,具有自己的IP范围、自己的父网络接口和自己的网关。那实际上是另一个网络。或者你可以考虑一些黑客攻击,比如使用代理容器监听另一个IP,并将流量转发到所需的容器中,但这有点“meh”。我想说的是,除非您愿意重新设计应用程序的连接性,否则VM开销不值得所有的麻烦。

票数 4
EN

Stack Overflow用户

发布于 2020-10-27 10:38:04

在docker文档中有关于“用户定义的”网络桥的文章,链接可以找到这里。我认为您必须根据您的网络体系结构来创建这些桥接器,一旦它们生成,您就可以在创建一个码头容器时指定它应该使用您创建的一个用户定义的桥接器。

由于您正在使用多个应用程序,并希望将其放入多个坞容器中,我还建议您研究一下“坞-组合”。这样,您就可以创建一个YML清单,它将使用定义的信任、网络、特定端口、.同时,您可以同时启动/关闭整个环境。

文章中可以找到一个例子,甚至更多关于坞映像的ip地址的信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64388836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档