将物理网卡绑定到docker容器

2024-01-27

我的主机 PC 上安装了 4 个 NIC。我想启动不同的 docker 容器,并将不同的物理网卡绑定到每个容器。我能为docker做些什么? 对于 VirtualBox,这可以通过为物理网卡的每个虚拟机创建桥接适配器来完成。


当您使用 Docker 公开端口时-P or -poptions 它只是创建一个 iptables 目标 NAT 或 DNAT 条目。您甚至可以通过运行以下命令来查看这些条目。

iptables -t nat -nL
...    
Chain DOCKER (2 references)
target     prot opt source               destination
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0      tcp dpt:8001 to:172.17.0.19:80
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0      tcp dpt:8002 to:172.17.0.20:80

默认情况下,docker 将使用 0.0.0.0/0(即所有接口)规范来转发来自 docker 容器主机的端口。但是,您可以将这些规则替换为仅从选定的接口转发。

假设我有两个 Web 服务器都想监听端口 80。我将按如下方式运行它们。请注意,我没有公开任何端口。这样只有我们创建的 IP 表规则才允许访问这些节点。

docker run --name web1 -t something/web-server
docker run --name web2 -t something/web-server

运行 dockerspect 以获取容器的虚拟 IP

docker inspect web1 | grep IPAddress
IPAddress": "172.17.0.19",
docker inspect web2 | grep IPAddress
IPAddress": "172.17.0.20",

现在为特定接口添加 DNAT 规则:

iptables -t nat -A DOCKER -p tcp -d [INTERFACE_1_IP] --dport 80 -j DNAT --to-destination 172.17.0.19:80
iptables -t nat -A DOCKER -p tcp -d [INTERFACE_2_IP] --dport 80 -j DNAT --to-destination 172.17.0.20:80
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将物理网卡绑定到docker容器 的相关文章

随机推荐

  • Postgresql表存在,但查询时出现“关系不存在”

    我有一个带有许多表的 postgresql 数据库 如果我查询 SELECT column name FROM information schema columns WHERE table name my table 我将得到正确返回的列的
  • 为什么 ghci 可以看到非导出类型和构造函数?我该如何修复它?

    我是哈斯克尔的新手 这是一些简单的代码 module Src The Answer type isn t exported Shape Circle i e Rectangle data constructor isn t exported
  • 在 Java 中使用 Xquery 处理器的 OSB fn-bea 函数

    您好 我正在尝试使用 Oracle 的 Java Xquery 处理器对 OSB 中使用的 xqueries 进行单元测试 参考下面的链接 http docs oracle com database 121 ADXDK adx j xqj
  • Excel 2010 中的简单 HLOOKUP 失败

    我有一个 Excel 电子表格 由电子表格设备生成 但这更多的是 Excel 问题 当我使用时它无法正常工作HLOOKUPS http office microsoft com en us excel help hlookup HP0052
  • C#/MEF 无法使用没有无参数构造函数的基类

    我有一个 Prim 类 它实现 MEF 的 IPrimitiveDecomposer 接口并继承 Node 基类 public class Node public Node public interface IPrimitiveDecomp
  • 套接字编程:recv()

    我有一个应用程序 其中各个实体通过套接字相互通信 并且我使用 C 编程语言 当一个实体向另一个实体发送长消息时 recv 函数可能会部分读取该消息 因此 我必须通过附加所有收到的部分来重新构造接收方的消息 我的问题是与recv 相关的一般套
  • 未解决的参考:build.gradle.kts 中的compileKotlin

    Kotlin项目通过build gradle成功构建 compileKotlin kotlinOptions jvmTarget JavaVersion VERSION 1 8 compileTestKotlin kotlinOptions
  • WebClient() 可以同时下载多个字符串吗?

    我的意思是我可以做这样的事情 var client new WebClient var result client DownloadString string http example com add php var result2 cli
  • 在 Windows 7 上执行 Fabric python 代码

    我正在尝试导入 Fabric 以用于我的 Python 版本 3 3 代码如下 fabfile py from fabric api import def hello print Hello world 但是在执行 C gt fab hel
  • Python - 检查类是否存在

    有没有办法检查类是否已定义 存在 我的菜单上有不同的选项 其中一些需要继承变量 因此如果您在设置变量之前尝试选择该函数 它会崩溃 我的课程名为 Gen0 我通过简单地输入 class Gen0 接下来是设置变量的其余代码 对于上下文 我正在
  • Reset_cooldown Discord.py

    我对discord py 和Python 都很陌生 但我正在努力学习 我不知道如何将 command reset cooldown 添加到我的代码中 正如下面代码中所说 我希望 test 忽略冷却时间 但我希望 test 2 有冷却时间 有
  • Spring Boot 中的 JAX-RS 和 MVC

    我有一个作为 MVC 工作的 Spring Boot 应用程序 我想在我的应用程序中使用 JAX RS 而不使用 Spring 注释 我将在不同的类中同时拥有 JAX RS 带注释的组件和 MVC 组件 当我添加 Jersey 资源配置时
  • Boost Container向量可以通过非原始指针管理内存吗?

    我有一个类似指针的结构来代替指针 与指针的区别在于它具有额外的信息 也是特殊的 分配器可以用来释放内存 这种类似指针的结构适用于所有基本用途 我可以分配和释放内存 解引用 增量 gt etc 现在我想使用这个指针来由类似STL的容器来管理
  • 邮递员到普罗米修斯和马车“\r”?第 1 行中的文本格式解析错误:预期浮点数作为值,得到“1\r”

    只是试图通过邮递员向普罗米修斯添加新的指标 但是得到 第 1 行中的文本格式解析错误 预期浮点数作为值 得到 1 r 度量就像 test metric 1 不带引号 为什么会发生这种情况以及如何将其从邮递员的请求中删除 原因在于之间的差异
  • 这里使用指针向量是不必要的还是更糟,会导致内存泄漏?

    我对 C 编程相对较新 但我是一名有 10 年经验的 C 程序员 因此我对对象的指针比对对象的引用更熟悉 我正在编写一款纸牌游戏 这种设计不安全吗 有没有更好的办法 无论如何 我还有课SolitaireGame class Solitair
  • 如何动态获取程序集名称[重复]

    这个问题在这里已经有答案了 我在图书馆里有一堂课是这样的 namespace Foo public abstract class EventBase public string EventSource gt Assembly GetExec
  • IE9 中的 iframe 中未发送 Cookie

    首先 我在发布这个问题之前做了一些研究 所以我知道P3P政策 https stackoverflow com questions 389456 cookie blocked not saved in iframe in internet e
  • php 多个 if 语句?

    抱歉 这看起来像是一个菜鸟问题 今天早上我的大脑无法运转 我正在尝试执行多个if声明 但他们的行为不正确 在找到它正在寻找的模板后 它似乎总是加载最少的模板 做这样的事情的最好方法是什么 post wp query gt post if i
  • 如何用Python中的其他字符替换字符串中的unicode字符?

    我有一个从阅读带有项目符号的 HTML 网页中获得的字符串 由于项目符号列表 这些项目符号具有类似 的符号 请注意 文本是来自使用 Python 2 7 的网页的 HTML 源代码urllib2 read webaddress 我知道项目符
  • 将物理网卡绑定到docker容器

    我的主机 PC 上安装了 4 个 NIC 我想启动不同的 docker 容器 并将不同的物理网卡绑定到每个容器 我能为docker做些什么 对于 VirtualBox 这可以通过为物理网卡的每个虚拟机创建桥接适配器来完成 当您使用 Dock