这是我的问题:我有一个用于Linux的数据科学虚拟机(Ubuntu),它将托管我的Docker Container。在这个容器里面我运行了一个Python脚本。我希望Azure Cloud中的C#Client与此容器集成。当它通过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);
答案 0 :(得分:1)
因此,如果我做对了,您就可以在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
现在您有<UbuntuIP>:8000
可访问的服务,因此您可以直接在C#代码中使用该服务。