不能连接到Windows上的dockertomcat容器 – 我做错了什么?
我在Windows 10 64bit上运行Docker Toolkit 1.9.1 ,我试图看看詹姆斯·特恩布尔书和一个简单的build立示例站点 。
在Docker shell中,我创build了一个目录dockerBuilds
。 在那个目录中,我创build了另一个名为my-tomcat
目录。
我进入该目录,然后运行touch Dockerfile
。 然后我创build了一个这样的简单的docker构build文件
# start from base image FROM library/tomcat MAINTAINER Will Woodman "will.woodman@btinternet.com"
从这我build立我的形象
docker build -t my-tomcat .
当我开始一个容器
docker run --name tomcatApp -i -p 8080:8080 my-tomcat
当tomcat启动时,我可以看到日志跟踪,当它解决时,与Chrome或其他浏览器的http://localhost:8080
失败。
我停下来取出容器,然后试着:
docker run --name tomcatApp -i -p 127.0.0.1:8080:8080 my-tomcat
并得到同样的问题。
我甚至试图通过将浏览器指向http://192.168.99.100:8080
连接到默认的docker虚拟机,但仍然无法连接。
所以我一定是做错了,但是我不知道是什么。 日志看起来很好,服务器说它已经启动了。 但是当我浏览时我没有看到任何连接。 docker stats tomcatApp
显示容器正在运行。
我在这里错过了从我的Windows本地主机到容器端口的端口映射?
我看到这个使用docker inspect
– 这看起来对我好
"NetworkSettings": { "Bridge": "", "SandboxID": "7c58e33e5d3821fc8a1dc6bb6957031d11e07c04bf34f8aa7b17f8afeff03700", "HairpinMode": false, "LinkLocalIPv6Address": "", "LinkLocalIPv6PrefixLen": 0, "Ports": { "8080/tcp": [ { "HostIp": "127.0.0.1", "HostPort": "8080" } ] },
我究竟做错了什么?
如果您使用的是docker-machine
并尝试联系localhost,则需要添加“ docker-machine中的端口转发? ”
-
要么端口转发VirtualBox级别上的8080port(意思
localhost:8080
将工作)VBoxManage controlvm "boot2docker-vm" natpf1 "tcp-port5000,tcp,,8080,,8080";
-
或使用由
$(docker-machine ip <yourMachine>)
返回的$(docker-machine ip <yourMachine>)
不要使用-p 127.0.0.1:8080:8080
,但-p 8080:8080
:127.0.0.1是指VirtualBox的本地主机,而不是主机(Windows)的本地主机。
build立图像并运行容器为
$ docker build tomcatApp . $ docker run -p 8080:8080 -t tomcatApp
点击给定的命令finddocker-machine的IP地址
$ docker-machine ls
输出将如下所示:
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS default * virtualbox Running tcp://192.168.99.100:2376 v1.10.3
现在从主机运行你的应用程序: http : //192.168.99.100 : 8080/myapp