我正在尝试运行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码头工人。
从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_1
和another_container
。
您的集装箱停靠可能相关也可能不相关;不幸的是,我无法用给出的信息回答这个问题 - 但这应该会为您提供足够的信息来连接您的容器。干杯!