无法连接到在Docker中运行的tomcat(连接被拒绝)

RMo*_*sey 6 tomcat windows-7-x64 docker boot2docker

我是Docker的新手,我正在尝试运行默认的tomcat映像.我看到容器正在运行,但当我尝试从我的Web浏览器中点击它时,我得到"CONNECTION REFUSED".

这里发生了什么?

细节

我在Windows 7 PC上安装了Docker Toolbox.我从较旧版本的boot2docker迁移了我的boot2docker VM.(它没有太多内容......只是"你好世界"的形象.)

在Docker Quickstart终端中,我能够使用以下命令启动我的新tomcat容器:

docker run -i -p 8080:8080 --rm tomcat:8-jre8
Run Code Online (Sandbox Code Playgroud)

我能够使用以下命令验证tomcat已启动并正在运行:

docker ps
docker exec -i <containerId> bash
Run Code Online (Sandbox Code Playgroud)

然后,在bash shell中:

curl localhost:8080
Run Code Online (Sandbox Code Playgroud)

从这个卷曲,我得到了预期的HTML响应.

但是,如果我直接从Docker Quickstart终端运行curl命令:

curl localhost:8080
Run Code Online (Sandbox Code Playgroud)

......我得到"拒绝连接".

现在这里有些令人费解......如果我跑了

boot2docker ip
Run Code Online (Sandbox Code Playgroud)

...它给我一个"boot2docker-vm"没有运行的错误.当boot2docker VM关闭时,我的容器如何运行?这里有一些我真的不明白的事情.

如果我运行"boot2docker up",我可以获得一个IP地址,但我仍然无法从该IP地址访问tomcat.

Sac*_*tra 16

您正在使用docker工具箱.boot2docker已被删除.现在每个docker守护程序(VM)都由Docker Machine管理

要查看正在运行的VM,请使用该命令

docker-machine ls
Run Code Online (Sandbox Code Playgroud)

它将显示系统上运行的默认 VM及其IP地址,您可以通过端口8080从该IP访问Tomcat.了解有关docker-machine的更多信息,以了解如何管理多个VM等.