gpt4 book ai didi

docker - 如何从父主机解析Docker主机名?

转载 作者:行者123 更新时间:2023-12-02 19:35:33 25 4
gpt4 key购买 nike

docker-compose up

。 。 。
docker-compose ps

Name Command State Ports
------------------------------------------------------------------------------------------------------------------------------------
localdockerdbandredis_kafka1_1 start-kafka.sh Up 0.0.0.0:9092->9092/tcp
localdockerdbandredis_kafka2_1 start-kafka.sh Up 0.0.0.0:9093->9092/tcp, 9093/tcp
localdockerdbandredis_kafka3_1 start-kafka.sh Up 0.0.0.0:9094->9092/tcp, 9094/tcp
localdockerdbandredis_spacejam_mysql_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp
localdockerdbandredis_spacejam_redis_1 docker-entrypoint.sh redis ... Up 0.0.0.0:6379->6379/tcp
localdockerdbandredis_zookeeper_1 /bin/sh -c /usr/sbin/sshd ... Up 0.0.0.0:2181->2181/tcp, 22/tcp, 2888/tcp, 3888/tcp

有没有办法从主机解析名称 localdockerdbandredis_kafka1_1。例如,
telnet localdockerdbandredis_kafka1_1 9092

设置环境的开发人员拥有我们的代码,可以按名称连接到 localdockerdbandredis_spacejam_mysql_1,但是他正在休假,而且我是docker的新手,所以我不知道如何使用名称来引用Kafka。

我的docker.compose-yml文件看起来像
version: '2'

services:

spacejam_mysql:
# image: mariadb:10.1.14
# image: mysql:5.6
image: iggcanada/mysql
expose:
- "3306"
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: ????
MYSQL_USER: ????
MYSQL_PASSWORD: ????
networks:
- madlands

spacejam_redis:
image: redis:latest
expose:
- "6379"
ports:
- "6379:6379"
networks:
- madlands

zookeeper:
image: wurstmeister/zookeeper
expose:
- "2181"
ports:
- "2181:2181"
networks:
- madlands

# http://wurstmeister.github.io/kafka-docker

kafka1:
build: .
expose:
- "9092"
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: localdockerdbandredis_kafka1_1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_DELETE_TOPIC_ENABLE: "true"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- madlands

kafka2:
build: .
expose:
- "9093"
ports:
- "9093:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: localdockerdbandredis_kafka2_1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_DELETE_TOPIC_ENABLE: "true"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- madlands

kafka3:
build: .
expose:
- "9094"
ports:
- "9094:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: localdockerdbandredis_kafka3_1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_DELETE_TOPIC_ENABLE: "true"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- madlands

# Create our named network of type bridge
networks:
madlands:
driver: bridge

基本上在我们的代码中,我希望能够将kafkaBootstrapServers配置为
spacejam.kafka.bootstrap.servers = "localdockerdbandredis_kafka1_1:9092,localdockerdbandredis_kafka2_1:9093,localdockerdbandredis_kafka3_1:9094"

我们的代码使用的方式
akka-persistence-sql-async.url = "jdbc:mysql://localdockerdbandredis_spacejam_mysql_1/spacejam_akka_persistence"

别处。

我一直在搜索有关如何从Docker解析名称的文档,但仍然找不到任何似乎可以描述如何执行此操作的文档。

最佳答案

从docker-compose输出中,您可以看到端口映射

Name                               Command               State                         Ports                        
------------------------------------------------------------------------------------------------------------------------------------
localdockerdbandredis_kafka1_1 start-kafka.sh Up 0.0.0.0:9092->9092/tcp
localdockerdbandredis_kafka2_1 start-kafka.sh Up 0.0.0.0:9093->9092/tcp, 9093/tcp
localdockerdbandredis_kafka3_1 start-kafka.sh Up 0.0.0.0:9094->9092/tcp, 9094/tcp

因此,对于您来说,Kafka1,Kafka2,Kafka映射的端口是9092、9093、9094。这意味着您可以在localhost和这些端口上telnet到它们
telnet 127.0.0.1 9092

在您的计算机上将您连接到Kafka1。要连接到Kafka 2,您将使用
telnet 127.0.0.1 9093

通过名称引用它们的唯一方法是在系统中创建一个主机条目,并将其指向localhost或您的计算机IP(如果主机文件不在您的计算机上)

/ etc / hosts
127.0.0.1 localdockerdbandredis_kafka1_1 localdockerdbandredis_kafka1_2 localdockerdbandredis_kafka1_3

现在,您可能面临的唯一问题是,当从计算机上运行的代码(外部docker)连接到 localdockerdbandredis_kafka1_2时,因为kafka使用公告的主机名和端口9092起作用,但是您的计算机将仅提供对9092上的Kafka 1的访问。

因此,输入这三个主机条目,将它们指向本地,然后查看是否一切正常

关于docker - 如何从父主机解析Docker主机名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45642191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com