在Windows 10下我有一个docker容器app
,里面有java服务器FROM openjdk:8
。 Java服务器在端口8080上启动,容器在Dockerfile
中公开此端口。
当我运行此容器的2个实例并将它们绑定到主机上的不同端口时,我可以通过具有不同端口的相同IP(VirtualBox Host-Only Network)访问它们。当我运行第三个实例时 - 所有实例都无法通过此IP访问,但内部的容器和应用程序仍在运行。 当我最近停止启动第三个容器时 - 前一个2个容器在一段时间内再次通过该IP访问。
我尝试将这些容器连接到不同的网络(桥接和新创建的网络),但这并没有帮助。
使用命令启动容器:
docker run --rm --name first_instance -v repo:/volume -it -p 8080:8080 app
docker run --rm --name second_instance --volumes-from first_instance -it -p 8081:8080 app
docker run --rm --name third_instance --volumes-from first_instance -it -p 8082:8080 app
Dockerfile是:( Docker版本:17.03.1-ce)
FROM openjdk:8
# Set the working directory to /app
WORKDIR /app
ADD root/deployment/. /root/deployment
ADD root/installation/. /root/installation
ADD scripts /app
# Make port 8080 available to the world outside this container
EXPOSE 8080
# Define environment variable
ENV INSTALLED_DIR="/root/installation/"
ENV DEPLOYED_DIR="/root/deployment/"
ENV JAVA_HOME="${INSTALLED_DIR}/java"
ENV INSTALLED_JARS_DIR="${INSTALLED_DIR}/lib"
ENV DEPLOYED_JARS_DIR="${DEPLOYED_DIR}/webapps/bin/WEB-INF/lib"
ENV DEPLOYED_CLASSES_DIR="${DEPLOYED_DIR}/webapps/bin/WEB-INF/classes"
CMD $JAVA_HOME/bin/java -cp
"$INSTALLED_JARS_DIR/*:$DEPLOYED_JARS_DIR/*:$DEPLOYED_CLASSES_DIR/*" \
-DAdminPassword=xxxxxxx -Dlog4j.configuration=log4j.properties \
org.flycaw.platform.Runner setup.properties setup-create-new.properties \
&& /root/deployment/wrapper/APP start \
&& /bin/bash
我想弄清楚为什么我可以运行超过2个应用程序实例并能够通过IP:PORT组合访问它们。