我有一个运行在overlay网络上的Docker容器。我的要求是从不同的主机外部访问在该容器内运行的服务。该服务绑定了容器的内部IP地址,因此在主机上进行端口绑定不是可行的解决方案。
实际情况如下: 容器内运行的服务是配置为使用yarn客户端的spark driver。Spark driver绑定到容器的内部IP(10.x.x.x)。当spark driver与在不同集群上运行的hadoop yarn通信时,应用程序主管在yarn上会尝试返回到驱动程序的容器内部IP,但由于明显的原因无法连接到内部IP上的驱动程序。
请告诉我是否有一种方法可以实现从应用程序主管(yarn)成功通信到spark driver(docker容器)。
Swarm版本:1.2.5
实际情况如下: 容器内运行的服务是配置为使用yarn客户端的spark driver。Spark driver绑定到容器的内部IP(10.x.x.x)。当spark driver与在不同集群上运行的hadoop yarn通信时,应用程序主管在yarn上会尝试返回到驱动程序的容器内部IP,但由于明显的原因无法连接到内部IP上的驱动程序。
请告诉我是否有一种方法可以实现从应用程序主管(yarn)成功通信到spark driver(docker容器)。
Swarm版本:1.2.5
docker info:
Containers: 3
Running: 2
Paused: 0
Stopped: 1
Images: 42
Server Version: swarm/1.2.5
Role: primary
Strategy: spread
Filters: health, port, containerslots, dependency, affinity, constraint
Nodes: 1
ip-172-30-0-175: 172.30.0.175:2375
└ ID: YQ4O:WGSA:TGQL:3U5F:ONL6:YTJ2:TCZJ:UJBN:T5XA:LSGL:BNGA:UGZW
└ Status: Healthy
└ Containers: 3 (2 Running, 0 Paused, 1 Stopped)
└ Reserved CPUs: 0 / 16
└ Reserved Memory: 0 B / 66.06 GiB
└ Labels: kernelversion=3.13.0-91-generic, operatingsystem=Ubuntu 14.04.4 LTS, storagedriver=aufs
└ UpdatedAt: 2016-09-10T05:01:32Z
└ ServerVersion: 1.12.1
Plugins:
Volume:
Network:
Swarm:
NodeID:
Is Manager: false
Node Address:
Security Options:
Kernel Version: 3.13.0-91-generic
Operating System: linux
Architecture: amd64
CPUs: 16
Total Memory: 66.06 GiB
Name: 945b4af662a4
Docker Root Dir:
Debug Mode (client): false
Debug Mode (server): false
运行容器的命令:我使用docker-compose来运行它:
zeppelin:
container_name: "${DATARPM_ZEPPELIN_CONTAINER_NAME}"
image: "${DOCKER_REGISTRY}/zeppelin:${DATARPM_ZEPPELIN_TAG}"
network_mode: "${CONTAINER_NETWORK}"
mem_limit: "${DATARPM_ZEPPELIN_MEM_LIMIT}"
env_file: datarpm-etc.env
links:
- "xyz"
- "abc"
environment:
- "VOL1=${VOL1}"
- "constraint:node==${DATARPM_ZEPPELIN_HOST}"
volumes:
- "${VOL1}:${VOL1}:rw"
entrypoint: ["/bin/bash", "-c", '<some command here>']
docker info
。同时请发布你用来创建容器和服务的代码。 - Bernarddepends_on
可用于依赖项。在网络版本2配置中,links
仍然有效,但它们所做的不同于以前。 - Mattdepends_on
可以用于依赖项,但请记住,它们非常有限。它们只检查容器是否正在运行,而不是容器内部的应用程序是否准备就绪。 - Bernard