首先,我有2个控制台应用程序。一个应该是客户端,另一个应该是侦听器。
客户端是在Docker中容器化的程序。我在PC上使用的另一个。
现在的问题是我正在尝试将客户端连接到我的侦听器。如果我在本地PC上对其进行测试,则可以正常工作,但是当我将其构建为映像并将其启动时,它将无法连接。
客户:
TcpClient tcpClient;
do
{
tcpClient = new TcpClient("IP", PORT);
} while (!tcpClient.Connected);
监听器:
var tcpListener = new TcpListener(PORT);
var tcpClient = tcpListener.AcceptTcpClient();
正如我在本地之前所说的那样,它可以工作,但是当放入docker映像时,它就不会工作。
Dockerfile
FROM mcr.microsoft.com/dotnet/core/aspnet
WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", "tcpconnector.dll"]
Docker命令:
docker build -t tcpconnector .
docker run -d --name connector tcpconnector
容器启动并运行完美,但不会连接到我的侦听器。如果更改方向,并且侦听器位于图像内部,则将暴露正在侦听的端口,如下所示:
docker run -d -p PORT --name listener IMAGE
可行!!但是我无法反其道而行之。