将Landoop Docker镜像与另一个Docker镜像集成

3

我正在尝试运行2个docker容器。其中一个是Landoop的Kafka容器,它向本地主机公开了几个端口;另一个是Kafka Connect容器,它试图访问其他镜像公开的端口。我能够访问Landoop的Kafka容器公开的端口,但是在尝试访问另一个容器的端口时出现了问题。

PS:我正在使用MAC,我尝试使用--network="host"启动我的另一个容器。

docker run -it --network="host" --env-file env-file.sh --name NAME IMAGE

但是容器在启动后立即被终止。我正在使用 docker run --rm -it -p 2181:2181 -p 3030:3030 -p 8081:8081 -p 8082:8082 -p 8083:8083 -p 9092:9092 -h 127.0.0.1 -e ADV_HOST=127.0.0.1 landoop/fast-data-dev 命令来启动 Landoop Docker。

我们正在使用 fast-data-dev 并将多个 Docker 组合在一起,即 fast-data-dev + elastic-search,以便对 Kafka 连接器的 stream-reactor 集合进行集成测试。GitHub 仓库链接为:https://github.com/Landoop/kafka-connectors-tests - Antonios Chalkiopoulos
2个回答

1

文档中,您可以找到以下信息:

连接到默认桥接网络的容器可以通过 IP 地址相互通信。Docker 不支持在默认桥接网络上进行自动服务发现。如果您希望容器能够按容器名称解析 IP 地址,则应改用用户定义的网络。您可以使用传统的 docker run --link 选项将两个容器链接在一起,但在大多数情况下不建议这样做。

虽然您尝试使用 host 网络并将自己定向到 127.0.0.1 看起来几乎是有道理的;但通常该地址分配给回环接口,因此无法访问计算机上的其他端口 - 而是永远停留在 Docker 容器中。

如果您没有使用 Docker Compose 文件(该文件通常会在默认覆盖网络中启动所有服务),而是想通过手动运行 docker container run 命令来运行所有内容,则您的设置应如下所示:

docker network create your_new_network

docker container run -d --network your_new_network --name a_container_1 your_image

docker container run -d --network your_new_network --name another_container

现在 - 从这些容器内部,您可以分别使用 a_container_1another_container 来访问每个容器。
您的容器停止可能与此有关;不幸的是,我无法根据给定的信息回答这个问题 - 但这应该为您连接容器提供足够的信息。干杯!

请纠正我如果我错了。 docker run --rm -it --network my_network --env-file kafka-connect-env.sh --name IMAGE NAMES 和 docker run --rm -it --network my_network -p 2181:2181 -p 3030:3030 -p 8081:8081 -p 8082:8082 -p 8083:8083 -p 9092:9092 -e ADV_HOST=127.0.0.1 landoop/fast-data-dev我正在尝试访问: BOOTSTRAP_URL=localhost:9092 Schema Registry URL=http://localhost:8081 (来自第一个容器)我有什么遗漏的吗?因为容器立即被杀死。 - Achilleus
我尝试使用localhost、docker.for.mac.localhost以及另一个Landoop容器的实际IP地址。此外,当我运行docker inspect命令时,它们似乎都在同一个网络中。谢谢。 - Achilleus

0

我认为这个变量是一个问题 > ADV_HOST=127.0.0.1 当你想要从主机连接到运行在Docker容器中的Kafka时,这个变量有助于建立连接。 然而,如果你定义了这个变量,它会让其他容器无法看到Kafka容器。 尝试以下两种方法: 1. 如果网络是HOST,即--network="host"和-e ADV_HOST=[local_ip],请将127.0.0.1替换为本地IP地址。 2. 删除ADV_HOST广告主机地址,并使用@tj-biddle提到的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接