我在本地主机上使用端口2181运行zookeeper(不是通过docker) .
此外,尝试通过docker运行docker镜像组成如下 .
#
# Mesos
#
mesos-master:
image: mesosphere/mesos-master:1.0.3
restart: always
privileged: true
network_mode: host
volumes:
- ~/mesos-data/master:/tmp/mesos
environment:
MESOS_CLUSTER: "mesos-cluster"
MESOS_QUORUM: "1"
MESOS_ZK: "zk://localhost:2181/mesos"
MESOS_PORT: 5000
MESOS_REGISTRY_FETCH_TIMEOUT: "2mins"
MESOS_EXECUTOR_REGISTRATION_TIMEOUT: "2mins"
MESOS_LOGGING_LEVEL: INFO
MESOS_INITIALIZE_DRIVER_LOGGING: "false"
Zookeepr正在侦听端口2181,但仍然我的docker进程无法连接到zookeeper端口2181 .
有什么遗漏?
谢谢
1 回答
您指向Docker容器内的
localhost
. 这意味着您的docker容器尝试连接到该特定端口上的容器本身(localhost),而不是连接到服务器的localhost . 您需要指定要连接的特定IP,或者可以使用--net="host"
选项运行docker容器 .这将在主机网络内创建容器,而不是在默认桥接网络内 .
示例:我在主机的
127.0.0.1:80
上创建了一个apache容器(默认)和映射端口 . 所以在我的服务器上我可以卷曲127.0.0.1:80
.来自主机的
curl 127.0.0.1:80
:如果我启动了一个安装了curl的帮助容器,我将卷曲
127.0.0.1:80
:连接被拒绝,因为容器位于默认桥接网络内,并尝试在端口80上卷曲自身 .
现在我在
host
网络内启动容器:--net=host
已翻译为您的docker-compose文件意味着您必须添加network_mode: host