我有一个泊坞窗容器(本机)上运行的服务。 我可以看到在Ambari服务配置服务URL。
现在我想用我的本地开发环境连接到该服务。
我发现我可以在容器内连接到这一点,但我之外使用URL在我的地方,我得到拒绝连接。
Cause: org.apache.http.conn.HttpHostConnectException: Connect to
xx.xx.xx.com:12008 [xx.xx.xx.com/195.169.98.101] failed: Connection refused
如何连接到来自外部的容器中运行的服务?
在我的情况下执行的代码在我的本地机器。
如果你的容器已制定了虚拟机12008端口上的端口,你需要确保你有口在你的VirtualBox的连接设置转发12008,正如我在提到“ 如何MySQL工作台连接到内部搬运工运行MySQL? ”
VBoxManage controlvm "boot2docker-vm" --natpf1 "tcp-port12008 ,tcp,,12008,,12008"
VBoxManage controlvm "boot2docker-vm" --natpf1 "udp-port12008 ,udp,,12008,,12008"
这个问题需要进一步澄清,但我会用一些假设回答。
我使用的Ambari 搬运工图像 (选择这个随机根据受欢迎程度)。 然后,我开始3个集群文提到的和我的amb-settings
和docker ps
是这样的:
anovil@anovil-Latitude-E6440:~/tmp/docker-ambari$ amb-settings
NODE_PREFIX=amb
CLUSTER_SIZE=3
AMBARI_SERVER_NAME=amb-server
AMBARI_SERVER_IMAGE=hortonworks/ambari-server:latest
AMBARI_AGENT_IMAGE=hortonworks/ambari-agent:latest
DOCKER_OPTS=
AMBARI_SERVER_IP=172.17.0.6
CONSUL=amb-consul
CONSUL_IMAGE=sequenceiq/consul:v0.5.0-v6
EXPOSE_DNS=false
DRY_RUN=false
anovil@anovil-Latitude-E6440:~/tmp/docker-ambari$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d2483a74d919 hortonworks/ambari-agent:latest "/usr/sbin/init syste" 20 minutes ago Up 20 minutes amb2
4acaec766eaa hortonworks/ambari-agent:latest "/usr/sbin/init syste" 21 minutes ago Up 20 minutes amb1
47e9419de59f hortonworks/ambari-server:latest "/usr/sbin/init syste" 21 minutes ago Up 21 minutes 8080/tcp amb-server
548730bb1824 sequenceiq/consul:v0.5.0-v6 "/bin/start -server -" 22 minutes ago Up 22 minutes 53/tcp, 53/udp, 8300-8302/tcp, 8400/tcp, 8301-8302/udp, 8500/tcp amb-consul
27c725af6531 sequenceiq/ambari "/usr/sbin/init" 23 minutes ago Up 23 minutes 8080/tcp awesome_tesla
anovil@anovil-Latitude-E6440:~/tmp/docker-ambari$
:截至目前,我可以通过访问Ambari服务器http://172.17.0.6:8080/
这个作品也从我的主机。 但是,如果你想这是从另一台计算机从一个类似的网络连接,那么一种选择是有一个HAProxy的它执行重定向来自:本地主机:8080 - > 172.17.0.6:8080
所以,我创建了一个小型haproxy.cfg
和Dockerfile
来实现这一目标:
anovil@anovil-Latitude-E6440:~/tmp/docker-ambari$ cat Dockerfile
FROM haproxy:1.6
COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg
anovil@anovil-Latitude-E6440:~/tmp/docker-ambari$ cat haproxy.cfg
frontend localnodes
bind *:8080
mode http
default_backend ambari
backend ambari
mode http
server ambari-server 172.17.0.6:8080 check
anovil@anovil-Latitude-E6440:~/tmp/docker-ambari$ docker build --rm -t ambariproxy .
Sending build context to Docker daemon 9.635 MB
Step 1 : FROM haproxy:1.6
---> af749d0291b2
Step 2 : COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg
---> Using cache
---> 60cdd2c7bb05
Successfully built 60cdd2c7bb05
anovil@anovil-Latitude-E6440:~/tmp/docker-ambari$ docker run -d -p 8080:8080 ambariproxy
63dd026349bbb6752dbd898e1ae70e48a8785e792b35040e0d0473acb00c2834
现在,如果我说本地主机:8080或MY_HOST_IP:8080我可以看到ambari服务器,这应该也是从工作计算机相同的网络。
希望我设法回答你的问题:)
谢谢,