我已经与dockerfile合作构建和映像,它构建和运行成功,但tomcat尚未启动

我已经与dockerfile合作构建和映像,它构建和运行成功,但tomcat尚未启动,tomcat,docker,tomcat7,boot2docker,Tomcat,Docker,Tomcat7,Boot2docker,我正在使用Dockerfile构建图像。 Docker文件的内容: FROM ubuntu # Update Ubuntu RUN apt-get update && apt-get -y upgrade # Add oracle java 7 repository RUN apt-get -y install software-properties-common RUN add-apt-repository ppa:webupd8team/java RUN apt-get -y

我正在使用Dockerfile构建图像。
Docker文件的内容:

FROM ubuntu
# Update Ubuntu
RUN apt-get update && apt-get -y upgrade
# Add oracle java 7 repository
RUN apt-get -y install software-properties-common
RUN add-apt-repository ppa:webupd8team/java
RUN apt-get -y update
# Accept the Oracle Java license
RUN echo "oracle-java7-installer shared/accepted-oracle-license-v1-1 boolean true" | debconf-set-selections
# Install Oracle Java
RUN apt-get -y install oracle-java7-installer
# Install tomcat
RUN apt-get -y install tomcat7
RUN echo "JAVA_HOME=/usr/lib/jvm/java-7-oracle" >> /etc/default/tomcat7
EXPOSE 8080
# Download Slashdot homepage
RUN mkdir /var/lib/tomcat7/webapps/slashdot
RUN wget http://www.slashdot.org -P /var/lib/tomcat7/webapps/slashdot
# Start Tomcat, after starting Tomcat the container will stop. So use a 'trick' to keep it running.
CMD service tomcat7 start && tail -f /var/lib/tomcat7/logs/catalina.out
当我尝试使用命令
docker build-t sample构建映像时。
,映像构建成功。
当我尝试使用

docker run -it --rm -p 8080:8080 sample
它显示:
启动tomcatservlet引擎tomcat7

但当我试图打开
localhost:8080
时,它显示
网页不可用


请说明原因。

由于您处于boot2docker环境中,这意味着端口8080映射到boot2docker VM(Linux主机)中的8080。不在您的电脑(Windows实际主机)中

您还需要在Virtualbox中打开该端口,以便从windows主机上看到该端口,并让浏览器访问localhost:8080

有关更多信息,请参阅:
(确保
c:\path\to\VirtualBox
在您的
路径中)

您可以设置永久性VirtualBox NAT端口转发:

如果vm已在运行,则应运行以下其他命令:


你已经用谷歌这样的搜索引擎搜索过解决方案了吗?谢谢@VonC的回复。我已经使用VM GUI对端口转发进行了配置。但是请让我知道你上面提到的命令,我需要在哪里运行这个命令?由于我无法确定将在何处运行此命令以确保端口转发工作正常。@YaminiTyagi如果您已使用VM GUI对端口进行了转发,则无需运行这些命令。如果你要运行这些命令,你可以在任何地方运行它们。非常感谢。我还有一个问题,我们可以在VM GUI中提供更多端口吗?当我在http请求下提供更多端口时,VM会删除该行,并且VM GUI中只有一行可用。@YaminiTyagi您应该能够通过虚拟盒GUI添加任意数量的端口。如在和
VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port8080,tcp,,8080,,8080";
VBoxManage controlvm "boot2docker-vm" natpf1 "tcp-port8080,tcp,,8080,,8080";