如何在Docker中从挂载的卷运行bash脚本并将该端口暴露在容器外部?

Dockerfile包含

FROM java:8 

Iam通过以下命令将我的主机目录挂载到docker中来执行此操作

 docker run -it -p 8585:9090 -v ~/Docker/:/data d23bdf5b1b1b /data/bin/script.sh 

我能够成功地运行,但问题是,当我尝试从浏览器访问它,我无法看到任何因为端口冲突,2服务运行在同一端口..

如何解决这个问题?

你的问题是,你正试图在一个新的容器中运行一个脚本,然后该容器就存在了。 它与正在运行的任何现有容器没有任何关系。

另外,当你指定一个要用docker运行的命令时,它不会运行你在构buildDockerfile时定义的CMD命令。

所以你需要做的是以下。

 docker run -d -p 8585:9090 -v ~/Docker/:/data d23bdf5b1b1b 

上述容器运行后,将打印新容器的ID。 现在你想在这个新的容器中执行你的命令

 docker exec -it <containerid> /data/bin/script.sh