2016-04-05 95 views
0

我在centos6.7碼頭工具集合中運行jboss5。訪問碼頭集裝箱內的jboss 8080端口

JBoss上運行使用run.sh -b 0.0.0.0命令 集裝箱使用docker run -i -t -p 8080:8080 my/jboss /bin/bash

這是我在容器看到運行

[[email protected] 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 

當我試圖從主機訪問jboss應用程序通過localhost:8080我看到ERROR 404: Not Found.

當我檢查本地主機:從容器內使用wget 8080我看到同樣的錯誤ERROR 404: Not Found.

一切都OK了,如果我使用的容器的IP地址。問題是我如何將主機localhost:8080綁定到容器ip_address:8080?

回答

1

localhost127.0.0.1的別名。這個地址用於環回。這意味着您的請求將返回到網絡OSI模型層上的同一臺機器(通過lo0接口ifconfig命令)。但是你可以使用請求localhost訪問您的容器:

  1. !!!非常-非常骯髒的黑客!不要使用它。只是爲了瞭解localhost問題。您可以編輯hosts文件(如適用於Mac):

    sudo nano /private/etc/hosts

    你會看到這樣的事情:

    127.0.0.1  localhost 
    255.255.255.255 broadcasthost 
    ::1    localhost 
    

    你容器的IP只需更換127.0.0.1。我在重複:只是爲了解localhost

  2. 您可以在您的localhost機器上運行NGINX實例。您可以對其進行配置,以便將所有請求從localhost:8080發送到containerIp:8080(不帶任何路由的任何配置的最佳變體)

相關問題