我在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?
答案 0 :(得分:1)
localhost
是127.0.0.1
的别名。此地址用于环回。这意味着您的请求将返回到网络OSI模型层上的同一台计算机(通过lo0
命令中的ifconfig
接口)。但您可以使用localhost
的请求访问您的容器:
!!!非常非常肮脏的黑客!不要使用它。只是为了解localhost问题。您可以编辑主机文件(Mac的示例):
sudo nano /private/etc/hosts
你会看到这样的事情:
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
只需用您的容器替换127.0.0.1
即可。我重复一遍:它只是为了解localhost
您可以在NGINX
计算机上运行localhost
个实例。您可以对其进行配置,以便将所有请求从localhost:8080
发送到containerIp:8080
(最佳变体,不带路由配置)