【问题标题】:Exposing Tap interface from docker container to docker host将 docker 容器中的 Tap 接口暴露给 docker 主机
【发布时间】:2017-09-01 06:40:39
【问题描述】:

我的应用程序在 docker 容器内创建了一个点击界面。 例如tap_1: ip: 192.168.2.1

我的要求是任何来自 docker 主机的数据包都可以直接发送到 docker 容器内的 tap 接口。我基本上是尽量避免一跳先发送到docker0,然后再转发到特定的tap接口。

我尝试通过管道和桥接网络,但似乎没有一个可以解决我的要求。

感谢您的帮助。 谢谢 Ankit

【问题讨论】:

  • 我不是网络专家,所以不太确定。但是您应该尝试在容器内使用 iptables 将传入流量路由到 192.168.2.1
  • 你找到解决办法了吗?

标签: docker networking docker-networking tun


【解决方案1】:

您需要为要启动的容器设置功能。默认情况下,docker 容器不能做任何他们想做的事情,除非你给他们分配能力。

借助功能,您几乎可以将网络设备映射到容器,然后做任何您想做的事情。不确定这是否是最佳方式,但它可以帮助您入门。

此外,容器网络的工作方式略有不同,具体取决于您使用的层。

例子:

docker run --cap-add=NET_ADMIN --device /dev/net/tun:/dev/net/tun -i -t alpine /bin/ash

【讨论】:

  • 他询问是否将 NIC 从容器内部添加到外部网桥。你要做的是让设备从外面到容器内都可用。