linux – 通过RDMA网络设备传递到docker容器

linux – 通过RDMA网络设备传递到docker容器,第1张

概述我想通过infiniband到docker容器,以便我可以在ipoib上运行一些高性能的应用程序并使用rdma. 目前,我正在使用xen虚拟机.现在我正在考虑使用CoreOS和docker作为更轻的重量和更容易管理的替代品. 我有一个IPoIB设备ib0,其分配的静态IP为10.10.10.10. 我已经设法在Docker容器中暴露了以下内容: docker run –net=host –devi 我想通过infiniband到docker容器,以便我可以在ipoib上运行一些高性能的应用程序并使用rdma.

目前,我正在使用xen虚拟机.现在我正在考虑使用CoreOS和docker作为更轻的重量和更容易管理的替代品.

我有一个IPoIB设备ib0,其分配的静态IP为10.10.10.10.
我已经设法在Docker容器中暴露了以下内容:

docker run –net=host –device=/dev/infiniband/uverbs0
–device=/dev/infiniband/rdma_cm -t -i ubuntu:14.04 /bin/bash

好的,有效. ib0在docker容器中可用.

现在让我们假设我有一个双端口HCA.在主机上,这些显示为ib0& ib1并分配了两个ip. 10.10.10.10/ib0和10.10.10.11/ib1

现在我想将ib0传递给第一个容器而将ib1传递给第二个容器.由于–net = host选项,使用上述方法两者都将出现在两个容器中.但是,不指定它意味着设备根本不显示.

另一种情况是我有很多机器使用SR-IOV将infiniband设备传送到xen虚拟机.我怎样才能将虚函数infiniband设备传递给docker容器并显示出来?

注意:管道工作在这种情况下不起作用,但如果我理解它更好,它可能会被黑客攻击做我想要的.我只是不太明白它在做什么……

解决方法 现在我可以回答我自己的问题,如何做到这一点.

使用我刚修补的pipework与Infiniband或RDMA IPoIB设备配合使用.

你这样运行它.

~ $docker run --device=/dev/infiniband/uverbs0 --device=/dev/infiniband/rdma_cm -d container ~ $pipework ib0 container-ID ip/netmask

由于IPoIB设备不支持桥接,因此在发出命令后,整个ib0设备对主机是隐藏的.即它被移动到容器的网络名称空间.

在没有桥接的情况下获得类似桥接的功能使用SR-IOV并通过管道传递虚拟功能.

最新版本使用虚拟IPoIB,类似于macvlan.因此,真实的ib0在主机中仍然可见.它的工作方式与以太网版本非常相似.

总结

以上是内存溢出为你收集整理的linux – 通过RDMA网络设备传递到docker容器全部内容,希望文章能够帮你解决linux – 通过RDMA网络设备传递到docker容器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1040998.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存