如何从docker中的已安装卷运行bash脚本并将该端口暴露于容器外部?

如何从docker中的已安装卷运行bash脚本并将该端口暴露于容器外部?

问题描述:

Dockerfile包含如何从docker中的已安装卷运行bash脚本并将该端口暴露于容器外部?

FROM java:8 

荫通过安装我的主机目录到搬运工运行此通过以下命令

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

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

如何解决此问题?

+1

你给的信息是不够的。请告诉哪个服务在哪个端口上运行,您如何运行这些服务,将这些服务归属于映像还是属于您的系统 – Ayushya

+0

iam使用java的映像:8,iam运行java microservices –

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

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

所以你需要做的是以下。

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

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

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

非常感谢您的工作但码头运行命令即docker run -d -it -p 8585:9090 -v〜/ Docker /:/ data d23bdf5b1b1b有一点变化,我们必须同时使用-d和-it来启动,否则它将会是立即退出 –

+0

然后你可能需要'-d -t'。 '-i'不应该需要 –

+0

另外我还有一个疑问是有可能使用dockerfile执行脚本本身,我的意思是没有使用docker exec。我想运行安装的卷中存在的脚本 –