将Landoop Docker图像与另一个泊坞窗图像集成

时间:2017-12-15 19:52:44

标签: docker apache-kafka

我正在尝试运行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码头工具。

2 个答案:

答案 0 :(得分: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

您的集装箱停靠可能相关也可能不相关;不幸的是,我无法用给出的信息回答这个问题 - 但这应该可以为您提供足够的信息来连接您的容器。干杯!

答案 1 :(得分:0)

我认为此变量是一个问题> ADV_HOST = 127.0.0.1 当您想从主机连接到Kafka(在docker容器中运行)时,此变量可以帮助建立连接 但是,如果定义了该变量,它将使另一个容器看不到Kafka容器。 尝试2件事: 1.如果网络为主机,即--network =“ host”且-e ADV_HOST = [local_ip],则用本地IP地址替换127.0.0.1。 2.删除该ADV_HOST广告主机地址,并使用提到的@ tj-biddle方法