Docker将容器地址注册为Zookeeper上的主机

我试图实现一个可以提供双向通信的Docker容器。 这个容器出现时,注册在局域网上的动物园pipe理员。

Dockerfile在下面提供。

FROM java:7 EXPOSE 7100 ARG version ENV version=$version ARG port ENV port=$port RUN mkdir -p /cacheDir/services/live/prediction/p$port/$version/logs RUN ls -tlr /cacheDir/services/live/prediction/p$port/ RUN mkdir -p /cacheDir/services/releases/prediction/p$port/$version/ RUN mkdir -p /cacheDir/services/predictionmodel ADD target/predictionDependencies/* /cacheDir/services/predictionmodel/ ADD /target/prediction-0.0.13-SNAPSHOT.jar /cacheDir/services/releases/prediction/p$port/$version/prediction-0.0.13-SNAPSHOT.jar ADD /target/instance.properties /cacheDir/services/releases/prediction/p$port/$version/instance.properties ADD /target/logback.xml /cacheDir/services/releases/prediction/p$port/$version/logback.xml RUN ls -ltr /cacheDir/services/live/prediction/p$port/$version/ RUN ls -ltr /cacheDir/services/releases/prediction/p$port/$version/ RUN ls -ltr /cacheDir/services/predictionmodel ENTRYPOINT ["sh","-c","java -server -Xmx2g -Xloggc:/cacheDir/services/live/prediction/p${port}/${version}/logs/gc.log -verbose:gc -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/cacheDir/services/live/prediction/p${port}/${version}/oom.dump -Dlogback.configurationFile=/cacheDir/services/releases/prediction/p${port}/${version}/logback.xml -Dlog.home=/cacheDir/services/live/prediction/p${port}/${version}/logs -Dlogback.debug=true -Dbroker.l^Ct=sv-kafka6.pv.sv.nextag.com:9092,sv-kafka7.pv.sv.nextag.com:9092,sv-kafka8.pv.sv.nextag.com:9092,sv-kafka9.pv.sv.nextag.com:9092 -jar /cacheDir/services/releases/prediction/p${port}/${version}/prediction-0.0.13-SNAPSHOT.jar $port /cacheDir/services/releases/prediction/p${port}/${version}/instance.properties /com/wizecommerce/services/$ZK_PATH"] 

用于构builddocker文件的命令。

 docker build --build-arg version=v4 --build-arg port=7100 -t prediction:v4 . 

图像创build成功。 用于在Zookeeper上注册服务的运行命令。

 sudo docker run -p 7100:7100 -e ZK_PATH=qa -v ~/PredictionVolume/logs/:/cacheDir/services/live/prediction/p7100/v4/logs/ -t prediction:v4 

该服务成功启动,容器可以访问Zookeeper的IP地址并在那里注册。 但是,在Zookeeper上获取寄存器的IP地址真的很奇怪。

 {"serviceEndpoint":{"host":"f88bf2357c97","port":7100},"additionalEndpoints":{},"status":"ALIVE","shard":0} 

它看起来好像Zookeeper的主机注册到容器的MAC地址。

我所做的是,我手动将主机地址更改为我的系统的IP。 在这样做,它成功起来,过程正常工作正常。 我希望每当我使用我的docker运行命令,我的系统的IP应该注册在Zookeeper而不是容器的IP。

另外,我也想知道如果我用下面提供的run命令使用我的机器的IP地址。 这个命令究竟意味着什么,以及它与以前使用的运行命令有什么不同。

 sudo docker run -p xyza:7100:7100 -e ZK_PATH=qa -v ~/PredictionVolume/logs/:/cacheDir/services/live/prediction/p7100/v4/logs/ -t prediction:v4 

其中x,y,z,a位于IPv4分段范围内(0-255)。

另外,请让我知道是否需要其他信息,我可能已经错过了。 非常感谢你的帮助!!!