我已经与dockerfilebuild立和形象,它build立和运行成功,但tomcat不起来
我正在使用Dockerfile来build立一个图像。
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 .
构build映像时docker build -t sample .
,图像被成功build立。
当我尝试运行该命令使用
docker run -it --rm -p 8080:8080 sample
它显示: Starting Tomcat servlet engine tomcat7
但是当我尝试打开localhost:8080
,它显示webpage is not available
。
请build议为什么这不起作用。
由于您处于boot2docker环境,这意味着端口8080被映射到boot2docker VM(Linux主机)中的8080。 不在你的电脑(Windows实际主机)。
您还需要在Virtualbox中打开该端口,以便从Windows主机中可以看到所述端口,并让您的浏览器访问localhost:8080。
请参阅Boot2Docker:无法获取端口转发以进行更多工作 :
(确保c:\path\to\VirtualBox
在PATH
)
你可以设置一个永久的VirtualBox NAT端口转发:
VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port8080,tcp,,8080,,8080";
如果虚拟机已经在运行,你应该运行这个命令:
VBoxManage controlvm "boot2docker-vm" natpf1 "tcp-port8080,tcp,,8080,,8080";
- 为什么用“docker运行 – 高山睡眠无限”创build的容器进入退出/停止状态?
- 在Docker容器中执行主机命令
- 基于docker的Flask Rest API – 优雅的closures
- docker呼叫程序(nodejs)从另一个容器(主pipe)
- 如何将Docker端口2375从virtualbox转发到主机操作系统窗口10
- Docker构build(MacOS vs Ubuntu)
- 将'Docker Run'选项传递给Mesos / Marathon / Chronos
- sbt-native-packager与Docker和Elastic Beanstalk合作
- 如何使用Docker镜像打包文件