我知道很多人都提出过类似的问题,但是我发现的任何解决方案都无法应用于我的案子。我相信解决方案应该很简单,但是我找不到它!
基本上,我需要从Docker容器(dmz)访问在我的主机上运行的特定服务。我有一个泊坞窗容器池和一个在真实计算机(主机)上运行的“ orchestrator”服务。这个家伙是在主机的端口5001上运行的python REST服务,它负责保存运行中的docker计算机等的执行日志。我需要一台特定的机器才能访问主机(dmz),但不需要其他机器!如果他们需要与主持人交谈,则需要通过dmz。
======================================================================
|1- HOST -> 5002:5002 dmz(dockerContainer):5002/service1 |
|2- dmz(container) <--> 9200:9200 elasticsearch(container):9200 |
|3- HOST:5002/service2 <- 5001:5001 dmz(dockerContainer) |
======================================================================
连接1和2有效。它们是休息服务,我什至可以得到休息请求的答案。 3是我现在需要做的,而且我不man强求!我不知道发生了什么,但我向上帝发誓,三周前我从容器中可以通过主机的真实IP地址访问主机,现在我不能了!我不知道发生了什么变化,但就在我可以现在之前,现在我不能了。
关于如何做到这一点的任何想法?!?!?
OS Version/build : Ubuntu 16.04
Docker version : 19.03.2, build 6a30dfc
Docker-compose version : 1.24.0, build 0aa59064
作曲家文件:
version: '3.5'
services:
dmz:
container_name: testbed_dmz
# 1 - DMZ image name
image: testbed_dmz:latest
ports:
# 2 - DMZ ports
- "5002:5002"
networks:
data_network:
# 3 - DMZ ip address
ipv4_address: 192.168.7.2
elasticsearch:
container_name: data_server
# 4 - Elasticsearch image name
image: docker.elastic.co/elasticsearch/elasticsearch:7.0.0
environment:
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- discovery.type=single-node
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
ports:
- "9200:9200"
networks:
data_network:
# 5 elasticsearch ip address
ipv4_address: 192.168.7.3
kibana:
container_name: testbed_kibana
# 6 kibana image name
image: docker.elastic.co/kibana/kibana:7.0.0
environment:
# 7 again the elasticsearch ip address
- SERVER_NAME=192.168.7.3
ports:
- "5601:5601" networks:
data_network:
# 8 kibana ip address
ipv4_address: 192.168.7.4
networks:
data_network:
# 9 the name of the network
name: DMZ_DATA_NET
driver: bridge
ipam:
driver: default
config:
# 10 the network address
- subnet: 192.168.7.0/29
答案 0 :(得分:0)
要连接到主机上运行的进程,请尝试在服务定义中添加network_mode: host
:
services: dmz:
container_name: testbed_dmz
network_mode: host
但是,如果dmz运行在主机的localhost:[port_num]
端口上,则dmz需要使用port_num
连接到python进程