我在码头集装箱里用Kafka。其中一个要求是,Kafka将提供给生产商在主机上运行本机。这就是为什么我将kafka\u播发的\u主机名设置为我的主机ip。
我的docker-compose.yml如下所示:
version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: 192.168.1.10
KAFKA_CREATE_TOPICS: "test:1:1"
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERES: PLAINTEXT://localhost:9092
volumes:
- /var/run/docker.sock:/var/run/docker.sock
而且很有效。
问题是,我想在其他机器上也能使用这个docker compose文件,但我不知道它们的ip可能是什么。
尝试将ip更改为类似“kafka”的名称会导致主机无法使用它(尽管从其他容器中仍然可用)。
有没有一种方法可以在docker compose文件中使用主机ip,而不必对其进行“硬编码”(以便在不同的机器上使用不同的ip地址)?
有没有别的办法解决这个问题?
1条答案
按热度按时间cgvd09ve1#
你有没有试过用这个房子?无论出于什么原因,它都不建议用于生产,但它可能适合您
主机.docker.internal
https://docs.docker.com/docker-for-mac/networking/#there-is-no-docker0-bridge-on-macos#i-want-to-connect-from-a-container-to-a-service-on-the-host主机
https://docs.docker.com/docker-for-windows/networking/#there-is-no-docker0-bridge-on-windows#i-want-to-connect-from-a-container-to-a-service-on-the-host主机