问题标签 [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.
docker - 无法通过 macvlan 网络从主机访问 docker 容器
在我的 Linux 网络中,我无法通过专用的 macvlan 网络从运行它们的主机访问我的 docker 容器。来自这个 macvlan 网络的所有其他连接都很好。
所以基本上设置是:
- 主机 DOCKER1 无法访问 CONTAINER1
- 主机 DOCKER2 无法访问 CONTAINER2
- 主机 DOCKER1 可以到达 DOCKER2
- 主机 DOCKER1 可以到达 CONTAINER2
- 主机 DOCKER2 可以到达 DOCKER1
- 主机 DOCKER2 可以到达 CONTAINER1
- 所有容器都可以互相到达
- 物理网络中的所有其他设备都可以到达所有
- 都可以到达网关/互联网
如何让主机通过 macvlan 网络访问自己的容器?
我需要特定的应用程序通过这个网络进行交互,所以使用docker exec
不会解决我的问题;)。
docker - 如何使用 macvlan 网络从外部主机 ping 本地 docker 容器?
目标:假设两台主机 A 和 B。A 上的容器 x 应该能够从主机 B ping 通,这样容器 x 与 A 和 B 位于同一网络中,并且有自己的 IP 地址。
Docker 为多主机网络提供了两种类型的网络解决方案 1) 带有/不带有 docker swarm 的覆盖网络 2) Macvlan 网络。 我想知道第二类 Macvlan 网络如何实现目标
linux - 在 Docker macvlan 中绑定地址
我正在尝试构建一个将 N 个容器绑定到同一个 ip 的 macvlan。每个容器将公开一项服务。要做到这一点:
运行容器:
桥:
此时我可以ping
和nmap
主机中的每个容器。我曾经inspect
检查"IPAddress"
过每个容器。检查结果macvlan
:
现在我正在创建另一个容器,如下所示:
我的目标是在相同的 ip 和 mac 下公开 2 个通用服务(尝试模拟具有 N 个服务的真机)。容器创建成功。但是如果我运行这个命令:
我期待在 66 处开放端口。但事实并非如此。
docker - Docker macvlan:从 hostB 访问 hostA 上的容器
https://docs.docker.com/network/network-tutorial-macvlan/#prerequisites
“创建一个名为 my-macvlan-net 的 macvlan 网络。将子网、网关和父值修改为在您的环境中有意义的值。”
说到网络,我是菜鸟。我不知道在我的环境中有意义的价值观是什么意思
这是我在主机网络接口中看到的,ip addr
我如何知道哪些值在我的环境中有意义?
ip路由
ip路由
docker - 让 gitlab/gitlab-ce 在 docker 上使用 macvlan
下面的 docker-compose.yml 文件应该使用 docker 的 macvlan 在我的本地网络上调出 gitlab 的 gitlab-ce。但是,我无法在浏览器中查看 gitlab-ce 或 ping 分配的 Ip。在检查了生成的容器后,我看到虽然容器确实在我的网络上分配了一个 IP 地址,
,它不分配 HostIp。
如何更新我的 docker-compose.yml 文件?
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 虚拟化角度进行配置,如果有任何区别,我也想知道裸机
docker - docker容器如何与主机通信?
主机ip:192.168.123.2 网关:192.168.123.1
适配器是 enp3s0,所以我在主机中创建了一个 docker 网络:
运行容器集 IP
容器和主机 ping 网关 192.168.123.1 都可以。
但在容器和主机之间不起作用。
容器:
ping 网关正常
ping 主机不正常
主机:
ping 网关正常
ping 容器不正常
为什么以及如何在 docker 容器和主机之间进行通信?
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”
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/tcp
,netstat -tulpn
但端口 80 或 443 上没有运行任何东西。(必须为容器中的那些安装包)
我尝试将监听地址设置为网卡 IP 或 172.0.0.1 但这也被拒绝:
问题:
- 为什么不能设置 80 和 443 端口?
- 为什么它适用于超过 2000 的端口?
- 在没有反向代理的情况下如何使这项工作? (反向代理带来了一大堆其他问题,我试图通过这个设置来避免)
设置
码头工人-compose.yml
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 容器访问互联网。