我正在使用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
显示:Starting Tomcat servlet engine tomcat7
但是当我尝试打开localhost:8080
时,会显示webpage is not available
。
请说明为什么这不起作用。
答案 0 :(得分:1)
由于您处于boot2docker环境中,这意味着端口8080在boot2docker VM(Linux主机)中映射到8080。不在您的PC(Windows实际主机)中。
您需要在Virtualbox中打开端口,以便从Windows主机上看到所述端口,并让浏览器访问localhost:8080。
有关详情,请参阅Boot2Docker: can't get ports forwarding to work:
(确保c:\path\to\VirtualBox
)
PATH
您可以设置永久VirtualBox NAT端口转发:
VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port8080,tcp,,8080,,8080";
如果vm已在运行,则应运行另一个命令:
VBoxManage controlvm "boot2docker-vm" natpf1 "tcp-port8080,tcp,,8080,,8080";