在Docker容器内部访问jboss 8080端口

我在centos6.7 docker收集器中运行jboss5。

使用run.sh -b 0.0.0.0命令运行的JBoss使用run.sh -b 0.0.0.0运行的容器运行docker run -i -t -p 8080:8080 my/jboss /bin/bash

这是我在容器中看到的

 [root@e44f2bbab31a bin]# netstat -alnt Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:8009 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:8083 0.0.0.0:* LISTEN 

这是我在主机上看到的

 15:04:17:(~)$ sudo docker ps [sudo] password for c0rp: CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e44f2bbab31a my/jboss "/bin/bash" 4 hours ago Up 4 hours 0.0.0.0:8080->8080/tcp thirsty_franklin 

当我试图通过localhost:8080主机访问主机jboss应用程序localhost:8080我看到ERROR 404: Not Found.

当我从容器内使用wget检查本地主机:8080我看到相同的错误ERROR 404: Not Found.

如果我使用容器的IP地址,一切都可以。 问题是我如何将主机localhost:8080绑定到容器ip_address:8080?

localhost127.0.0.1的别名。 这个地址用于回送。 这意味着您的请求将返回到networkingOSI模型层上的同一台计算机(通过ifconfig命令中的lo0接口)。 但是您可以使用请求到localhost访问您的容器:

  1. !!!非常非常肮脏的黑客! 不要使用它。 只是为了了解localhost问题。 您可以编辑主机文件(Mac示例):

    sudo nano /private/etc/hosts

    你会看到这样的东西:

     127.0.0.1 localhost 255.255.255.255 broadcasthost ::1 localhost 

    只要用你的容器的IPreplace127.0.0.1 。 我重复一遍:这只是为了了解localhost

  2. 您可以在localhost上运行NGINX实例。 您可以将其configuration为将所有请求从localhost:8080发送到containerIp:8080 (最佳变体,不containerIp:8080任何configuration)