无法连接到Windows上的docker tomcat容器 - 我做错了什么?

时间:2016-01-17 13:46:10

标签: docker tomcat7

我在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"
             }
         ]
     }, 

我做错了什么?

2 个答案:

答案 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>)

  • 返回的IP

并且不使用-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