【发布时间】:2017-03-28 19:47:16
【问题描述】:
有两个java文件,Server.java和Client.java。 两者都在不同的容器中。
码头工人文件: 我用于服务器的 dockerfile(在名为“Server”的文件夹中)是:
FROM java:8
COPY Server.java /
RUN javac Server.java
EXPOSE 25000
ENTRYPOINT ["java"]
CMD ["Server"]
客户端的dockerfile(在名为'Client'的文件夹中)是:
FROM java:8
COPY Client.java /
RUN javac Client.java
EXPOSE 25000
ENTRYPOINT ["java"]
CMD ["Client"]
构建容器:
使用sudo docker build -t serverimage .构建容器
运行容器:
我使用命令sudo docker run <IMAGE_NAME> 运行图像。我首先运行服务器图像。
我得到的错误(当我运行 clientimage 时)是:
java.net.ConnectException: Connection refused: connect
Server.java 文件:
import java.io.*;
import java.net.*;
public class MyServer {
public static void main(String[] args){
try{
ServerSocket ss=new ServerSocket(25000);
Socket s=ss.accept();//establishes connection
DataInputStream dis=new DataInputStream(s.getInputStream());
String str=(String)dis.readUTF();
System.out.println("message= "+str);
ss.close();
}catch(Exception e){System.out.println(e);}
}
}
Client.java 文件:
import java.io.*;
import java.net.*;
public class MyClient {
public static void main(String[] args) {
try{
Socket s=new Socket("localhost",25000);
DataOutputStream dout=new DataOutputStream(s.getOutputStream());
dout.writeUTF("Hello Server");
dout.flush();
dout.close();
s.close();
}catch(Exception e){System.out.println(e);}
}
}
我可能做错了什么? 谢谢!
【问题讨论】:
-
你做错的是从客户端连接到客户端(这就是“localhost”的意思——容器本身)。您可能想了解一下Docker networking。
标签: docker