问题标签 [macvlan]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6741 浏览

docker - 无法通过 macvlan 网络从主机访问 docker 容器

在我的 Linux 网络中,我无法通过专用的 macvlan 网络从运行它们的主机访问我的 docker 容器。来自这个 macvlan 网络的所有其他连接都很好。

所以基本上设置是:

  • 主机 DOCKER1 无法访问 CONTAINER1
  • 主机 DOCKER2 无法访问 CONTAINER2
  • 主机 DOCKER1 可以到达 DOCKER2
  • 主机 DOCKER1 可以到达 CONTAINER2
  • 主机 DOCKER2 可以到达 DOCKER1
  • 主机 DOCKER2 可以到达 CONTAINER1
  • 所有容器都可以互相到达
  • 物理网络中的所有其他设备都可以到达所有
  • 都可以到达网关/互联网

如何让主机通过 macvlan 网络访问自己的容器?

我需要特定的应用程序通过这个网络进行交互,所以使用docker exec不会解决我的问题;)。

0 投票
2 回答
1186 浏览

docker - 如何使用 macvlan 网络从外部主机 ping 本地 docker 容器?

目标:假设两台主机 A 和 B。A 上的容器 x 应该能够从主机 B ping 通,这样容器 x 与 A 和 B 位于同一网络中,并且有自己的 IP 地址。

Docker 为多主机网络提供了两种类型的网络解决方案 1) 带有/不带有 docker swarm 的覆盖网络 2) Macvlan 网络。 我想知道第二类 Macvlan 网络如何实现目标

0 投票
1 回答
1470 浏览

linux - 在 Docker macvlan 中绑定地址

我正在尝试构建一个将 N 个容器绑定到同一个 ip 的 macvlan。每个容器将公开一项服务。要做到这一点:

运行容器:

桥:

此时我可以pingnmap主机中的每个容器。我曾经inspect检查"IPAddress"过每个容器。检查结果macvlan

现在我正在创建另一个容器,如下所示:

我的目标是在相同的 ip 和 mac 下公开 2 个通用服务(尝试模拟具有 N 个服务的真机)。容器创建成功。但是如果我运行这个命令:

我期待在 66 处开放端口。但事实并非如此。

0 投票
1 回答
93 浏览

docker - Docker macvlan:从 hostB 访问 hostA 上的容器

https://docs.docker.com/network/network-tutorial-macvlan/#prerequisites

“创建一个名为 my-macvlan-net 的 macvlan 网络。将子网、网关和父值修改为在您的环境中有意义的值。”

说到网络,我是菜鸟。我不知道在我的环境中有意义的价值观是什么意思

这是我在主机网络接口中看到的,ip addr

我如何知道哪些值在我的环境中有意义?

ip路由

ip路由

0 投票
0 回答
311 浏览

docker - 让 gitlab/gitlab-ce 在 docker 上使用 macvlan

下面的 docker-compose.yml 文件应该使用 docker 的 macvlan 在我的本地网络上调出 gitlab 的 gitlab-ce。但是,我无法在浏览器中查看 gitlab-ce 或 ping 分配的 Ip。在检查了生成的容器后,我看到虽然容器确实在我的网络上分配了一个 IP 地址,

,它不分配 HostIp。

如何更新我的 docker-compose.yml 文件?

0 投票
3 回答
12738 浏览

docker - 容器内的 Docker Macvlan 网络未到达其自己的主机

我在 2 个 docker 主机之间设置了 Macvlan 网络,如下所示:

主机设置:HOST_1ens192: 172.18.0.21

创建 macvlan 网桥接口

创建macvlan接口HOST_1

主机设置:HOST_2ens192: 172.18.0.23

创建 macvlan 网桥接口

在 HOST_2 中创建 macvlan 接口

容器设置

在两个主机中创建容器

HOST_1 中的 CONTAINER_1

HOST_2 中的 CONTAINER_2

CONTAINER_1 和 CONTAINER_2 中的路由表

设想

HOST_1 (172.18.0.21) <-> HOST_2 (172.18.0.23)= 好的(反之亦然)

HOST_1 (172.18.0.21) -> CONTAINER_1 (172.18.1.0) and CONTAINER_2 (172.18.1.16)= 好的

HOST_2 (172.18.0.23) -> CONTAINER_1 (172.18.1.0) and CONTAINER_2 (172.18.1.16)= 好的

CONTAINER_1 (172.18.1.0) -> HOST_2 (172.18.0.23)= 好的

CONTAINER_2 (172.18.1.16) -> HOST_1 (172.18.0.21)= 好的

CONTAINER_1 (172.18.1.0) <-> CONTAINER_2 (172.18.1.16)= 好的(反之亦然)

CONTAINER_1 (172.18.1.0) -> HOST_1 (172.18.0.21)= 失败

CONTAINER_2 (172.18.1.16) -> HOST_2 (172.18.0.23)= 失败

问题

除了这 1 个问题外,我非常接近我想要实现的解决方案。我怎样才能使容器连接到它自己的主机。如果有解决方案,我想知道如何在 ESXi 虚拟化角度进行配置,如果有任何区别,我也想知道裸机

0 投票
1 回答
1673 浏览

docker - docker容器如何与主机通信?

主机ip:192.168.123.2 网关:192.168.123.1

适配器是 enp3s0,所以我在主机中创建了一个 docker 网络:

运行容器集 IP

容器和主机 ping 网关 192.168.123.1 都可以。
但在容器和主机之间不起作用。

容器:
ping 网关正常
ping 主机不正常

主机:
ping 网关正常
ping 容器不正常

为什么以及如何在 docker 容器和主机之间进行通信?

0 投票
0 回答
1343 浏览

docker - 带有macvlan的Docker容器不能被其他主机ping通

我知道我无法从同一主机 ping macvlan 接口,但我无法从不同子网上的主机 ping 容器的 macvlan 接口(即使它们通过路由器连接)。

主机IP:10.8.2.132/22

Macvlan 容器 IP:10.8.2.250/22

其他主机IP:10.4.16.141/22

ip route get 10.8.2.250 说明有已知路由:

我该如何调试呢?

docker macvlan 网络是通过以下方式创建的:

当我运行容器时,我特别添加了“--ip=10.8.2.250”

0 投票
1 回答
1112 浏览

docker - Docker 容器中的 JetBrains/Teamtools “无法侦听地址 0.0.0.0 和端口 443”

问题

我正在尝试在 docker 容器中设置 JetBrains Hub、Youtrack、Upsource 和 Teamcity,并将它们配置为在默认端口 80 上可用自己的 IP(macvlan),重定向到 HTTPS 的 443 和 443(所以端口号可以不显示在浏览器中)。

但是,如果我这样做,我会得到:

无法监听地址 0.0.0.0 和端口 443

将 teamtools 保留在其默认端口 8080 和 8443 上工作或为他们提供超过 2000 的端口似乎也可以。

我检查过fuser 443/tcpnetstat -tulpn但端口 80 或 443 上没有运行任何东西。(必须为容器中的那些安装包)

我尝试将监听地址设置为网卡 IP 或 172.0.0.1 但这也被拒绝:


问题:

  1. 为什么不能设置 80 和 443 端口?
  2. 为什么它适用于超过 2000 的端口?
  3. 在没有反向代理的情况下如何使这项工作? (反向代理带来了一大堆其他问题,我试图通过这个设置来避免)

设置

码头工人-compose.yml

0 投票
1 回答
7538 浏览

docker - 通过特定物理接口的 docker 网络

所以我正在尝试创建一个网络 ( docker network create),以便其流量将通过特定的物理网络接口 (NIC);我有两个:(<iface1>内部)和<iface2>(外部)。

我需要将两个 NIC 的流量进行物理分离。


方法一

我认为macvlan是驱动程序应该用来创建这样的网络。对于我在互联网上找到的大部分内容,解决方案是指 Pipework(现已弃用)和临时 docker-plugins(也已弃用)。最能帮助我的是这个1

然后,为了使容器从主机可见,我需要在主机中执行此操作:

现在容器和主机互相看到了:) 但是容器无法访问本地网络。这个想法是容器可以访问互联网。


方法二

正如我将<iface2>手动使用的那样,如果默认情况下流量通过<iface1>. 但无论我以哪种顺序启动 NIC(我也尝试<iface2>暂时移除 LKM);整个流量总是被外部网卡所取代<iface2>。我发现它发生是因为路由表会在某个“随机”时间自动更新。为了强制流量通过<iface1>,我必须(在主机中):

现在,我可以(通过多种方式)验证流量是否刚刚通过<iface1>。但是在路由表更新(自动)的那一刻,所有流量都移动到<iface2>. 该死!我确信有一种方法可以使路由表“静态”或“持久”。


编辑(2018 年 7 月 18 日): 主要思想是能够使用两个可用物理网络接口之一通过 docker 容器访问互联网。