use*_*872 1 docker docker-compose
我在本地主机上使用端口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"
Run Code Online (Sandbox Code Playgroud)
Zookeepr正在侦听端口2181,但仍然我的docker进程无法连接到zookeeper端口2181.
有什么遗漏?
谢谢
您localhost从docker容器内部指向.这意味着您的docker容器尝试连接到该特定端口上的容器本身(localhost),而不是连接到服务器的localhost.您需要指定要连接的特定IP,或者您可以使用该--net="host"选项运行docker容器.
$ docker run -d --net="host" ...
Run Code Online (Sandbox Code Playgroud)
这将在主机网络内创建容器,而不是在默认桥接网络内.
示例:我127.0.0.1:80在主机上创建一个apache容器(默认)和map port .所以在我的服务器上我可以卷曲127.0.0.1:80.
$ docker run -d -p 80:80 httpd
Run Code Online (Sandbox Code Playgroud)
curl 127.0.0.1:80 来自主人的作品:
$ curl localhost:80
<html><body><h1>It works!</h1></body></html>
Run Code Online (Sandbox Code Playgroud)
如果我启动了一个安装了curl的帮助容器,我会卷曲127.0.0.1:80:
$ docker run --rm tutum/curl /bin/bash -c 'curl 127.0.0.1:80'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0curl: (7) Failed to connect to 127.0.0.1 port 80: Connection refused
Run Code Online (Sandbox Code Playgroud)
连接被拒绝,因为容器位于默认桥接网络内,并尝试在端口80上卷曲自身.
现在我在host网络中启动容器:
$ docker run --net=host --rm tutum/curl /bin/bash -c 'curl 127.0.0.1:80'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 45 100 45 0 0 8573 0 --:--:-- --:--:-- --:--:-- 22500
<html><body><h1>It works!</h1></body></html>
Run Code Online (Sandbox Code Playgroud)
该--net=host翻译成你的搬运工,撰写文件,意味着你必须添加network_mode: host
| 归档时间: |
|
| 查看次数: |
4527 次 |
| 最近记录: |