【问题标题】:Integrate Landoop Docker image with another docker image将 Landoop Docker 映像与另一个 Docker 映像集成
【发布时间】:2019-06-20 22:56:30
【问题描述】:

我正在尝试运行 2 个 docker 容器。一个是 Landoop 的 Kafka 容器,它向本地主机公开几个端口,一个 kafka 连接容器,它试图访问另一个图像公开的端口。我能够访问由 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。

【问题讨论】:

  • github.com/Landoop/kafka-connectors-tests 我们正在使用 fast-data-dev 并将多个 docker 组合在一起,即 fast-data-dev + elastic-search 以便对 kafka 连接器的 stream-reactor 集合进行集成测试

标签: docker apache-kafka


【解决方案1】:

documentation您可以找到以下信息:

连接到默认桥接网络的容器可以通过 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 图像名称和 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= localhost:8081(来自第一个容器)我错过了什么吗?因为容器会立即被杀死
  • 我尝试使用 localhost,docker.for.mac.localhost。另一个landoop容器的实际IP。另外,当我运行 docker inspect 时,它们似乎都在同一个网络上。谢谢
【解决方案2】:

我认为这个变量是个问题 > ADV_HOST=127.0.0.1 当您想从您的主机连接到 Kafka(在您的 docker 容器中运行)时,此变量有助于该连接 但是,如果您定义该变量,它会使其他容器无法看到 Kafka 容器。 2件事要尝试: 1. 如果网络是 HOST,则将 127.0.0.1 替换为本地 IP 地址,即 --network="host" 和 -e ADV_HOST=[local_ip] 2.删除ADV_HOST广告主机地址并使用@tj-biddle提到的方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-20
    • 1970-01-01
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多