我在Windows 10 64bit上运行 Docker Toolkit 1.9.1 ,我正在尝试查看james turnbull书和simple build up example site。
在Docker shell中,我创建了一个目录dockerBuilds
。在该目录中,我创建了另一个名为my-tomcat
的目录。
我cd
进入该目录并运行touch Dockerfile
。然后我创建了一个像这样的简单docker构建文件
# start from base image
FROM library/tomcat
MAINTAINER Will Woodman "will.woodman@btinternet.com"
从中我用
建立我的形象docker build -t my-tomcat .
当我用
启动容器时docker run --name tomcatApp -i -p 8080:8080 my-tomcat
我可以在tomcat启动时看到日志跟踪,当它结算时,与http://localhost:8080
的连接无法通过Chrome或其他浏览器连接。
我停下来取出容器然后尝试:
docker run --name tomcatApp -i -p 127.0.0.1:8080:8080 my-tomcat
并得到同样的问题。
我甚至尝试通过将浏览器指向http://192.168.99.100:8080
来连接到默认的docker vm,但仍然无法连接。
所以我一定做错了,但我不知道是什么。日志看起来很好,服务器说它已经启动了。但是当我浏览时,我没有看到任何连接。 docker stats tomcatApp
显示容器正在运行。
从Windows localhost到容器端口的端口映射,我在这里缺少什么?
我使用docker inspect
看到了这一点 - 这对我来说很好看
"NetworkSettings": {
"Bridge": "",
"SandboxID": "7c58e33e5d3821fc8a1dc6bb6957031d11e07c04bf34f8aa7b17f8afeff03700",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"8080/tcp": [
{
"HostIp": "127.0.0.1",
"HostPort": "8080"
}
]
},
我做错了什么?
答案 0 :(得分:2)
如果您使用docker-machine
并尝试联系localhost,则需要添加" Port forwarding in docker-machine?"
将端口转发到VirtualBox级别的8080端口(意味着localhost:8080
将起作用)
VBoxManage controlvm "boot2docker-vm" natpf1 "tcp-port5000,tcp,,8080,,8080";
或使用$(docker-machine ip <yourMachine>)
并且不使用-p 127.0.0.1:8080:8080
,但-p 8080:8080
:127.0.0.1是指VirtualBox的本地主机,而不是主机(Windows)的本地主机。
答案 1 :(得分:0)
构建图像并将容器作为
运行
$ docker build tomcatApp .
$ docker run -p 8080:8080 -t tomcatApp
点击命令查找docker-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