Azure 在Ubuntu中如何将一个IP路由到另一个IP?

Azure 在Ubuntu中如何将一个IP路由到另一个IP?,azure,ubuntu,docker,ip,azure-dsvm,Azure,Ubuntu,Docker,Ip,Azure Dsvm,这是我的问题:我有一个用于Linux Ubuntu的数据科学虚拟机,它将托管我的Docker容器。在这个容器中,我运行了一个Python脚本。我希望Azure云中的C客户端与此容器集成。当它通过XMLRPC请求通过ubuntu ip调用此脚本的函数时,我的主机应该将ip地址重定向到容器的ip:port/。 Idk如何进行ip重定向,或者称为转发/路由?。 我在互联网上找到的最简单的解决方案是XMLRPC。 有人能帮我吗?还有没有更好的方法代替XMLRPC或JSONRPC 这是我的客户部分: [X

这是我的问题:我有一个用于Linux Ubuntu的数据科学虚拟机,它将托管我的Docker容器。在这个容器中,我运行了一个Python脚本。我希望Azure云中的C客户端与此容器集成。当它通过XMLRPC请求通过ubuntu ip调用此脚本的函数时,我的主机应该将ip地址重定向到容器的ip:port/。 Idk如何进行ip重定向,或者称为转发/路由?。 我在互联网上找到的最简单的解决方案是XMLRPC。 有人能帮我吗?还有没有更好的方法代替XMLRPC或JSONRPC

这是我的客户部分:

[XmlRpcUrl("http://@UbuntuIP:666/ContainerIP:8000/RPC2")] 
 public interface ICallServer:IXmlRpcProxy
{
    [XmlRpcMethod]
    string result(string storageAccountName, string containerName,string imageName);
}

ICallServer icallServerTest = XmlRpcProxyGen.Create<ICallServer>();
var output = icallServerTest.func(params);

所以,如果我没弄错的话,你可以在Azure云上运行一个C代码,它可以访问你的VM IP

我假设您的Azure机器能够访问VM的IP。现在,当您在VM中启动Python容器时,Python服务器将监听某个端口。假设这个端口是8000。您需要的是,您需要启动docker容器并将此端口发布到主机上

docker run -d --name my-python-container -p 8000:8000 my-python-image

现在,您有了一个可以在:8000上访问的服务,因此您可以在C代码中直接使用该服务。

谢谢您的回答。但是有没有可能解释一下你的名字是什么意思?我建立了一个docker文件,图像的名称是img处理。我有一个Main.py,它监听端口:8000。我想在容器的后台运行这个Main.py。Main.py未附加到dockerfile。我已经建立了Dockerfile。现在我要运行它并创建容器,我必须执行您的命令,对吗?但是你所说的名字,python容器。我相信my python映像将是img-processing.name是可选的,我只是给出了它,因为以后在docker ps中跟踪该容器会变得更容易。此外,您应该在docker文件中添加main.py。谢谢,我会尝试这样做。但是MyPython容器是容器id吗?但在运行之后还没有创建它。