访问docker容器内的jboss 8080端口

时间:2016-04-05 09:07:47

标签: bash jboss docker

我在centos6.7 docker contrainer中运行jboss5。

使用run.sh -b 0.0.0.0命令运行JBoss 使用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应用程序时,我看到ERROR 404: Not Found.

当我使用wget从容器内部检查localhost:8080时,我看到同样的错误ERROR 404: Not Found.

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

1 个答案:

答案 0 :(得分:1)

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

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

    sudo nano /private/etc/hosts

    你会看到这样的事情:

    127.0.0.1       localhost
    255.255.255.255 broadcasthost
    ::1             localhost
    

    只需用您的容器替换127.0.0.1即可。我重复一遍:它只是为了解localhost

  2. 您可以在NGINX计算机上运行localhost个实例。您可以对其进行配置,以便将所有请求从localhost:8080发送到containerIp:8080(最佳变体,不带路由配置)