当前位置: 首页 > 知识库问答 >
问题:

访问OSX上docker中运行的领事UI

上官思博
2023-03-14

我有一个类似的问题,如何访问外部的领事UI,但我不能使网络选项的组合工作正确。

我在OSX上使用的是Docker for Mac,而不是老的Docker机器,也使用了官方的Consuler Docker镜像,而不是Progrium/Docker镜像。

我可以使用以下方法启动一个3节点服务器集群

docker run -d --name node1 -h node1 consul agent -server -bootstrap-expect 3
JOIN_IP="$(docker inspect -f '{{.NetworkSettings.IPAddress}}' node1)"
docker run -d --name node2 -h node2 consul agent -server -join $JOIN_IP
docker run -d --name node3 -h node3 consul agent -server -join $JOIN_IP

到目前为止还不错,他们互相联系,工作很好。现在我想启动一个代理,并通过它查看UI。

我尝试了一堆-client和-bind的组合,它们似乎是这一切的关键。使用

docker run -d -p 8500:8500 --name node4 -h node4 consul agent -join $JOIN_IP  -ui -client=0.0.0.0 -bind=127.0.0.1
docker exec -t node4 consul members
Node   Address          Status  Type    Build  Protocol  DC
node1  172.17.0.2:8301  alive   server  0.7.1  2         dc1
node2  172.17.0.3:8301  alive   server  0.7.1  2         dc1
node3  172.17.0.4:8301  alive   server  0.7.1  2         dc1
node4  127.0.0.1:8301   alive   client  0.7.1  2         dc1
2016/12/19 18:18:13 [ERR] memberlist: Failed to send ping: write udp 127.0.0.1:8301->172.17.0.4:8301: sendto: invalid argument

如果我尝试-bind=My Box的外部IP,它将无法启动,

Error starting agent: Failed to start Consul client: Failed to start lan serf: Failed to create memberlist: Failed to start TCP listener. Err: listen tcp 192.168.1.5:8301: bind: cannot assign requested address

我还尝试映射所有其他端口,包括udp端口(-p8500:8500-p8600:8600-p8400:8400-p8300-8302:8300-8302-p8600:8600/UDP-p8301-8302:8301-8302/udp),但这没有任何改变。

我如何加入一个节点到这个集群并查看UI?

共有1个答案

端木鹏
2023-03-14

尝试使用Consul0.7.2版本,并使用以下语法启动代理(从0.7.2开始测试,到0.8.0结束):

$docker run-d-p 8500:8500--name node4-h node4领事代理-join$JOIN_IP-ui-client=0.0.0.0-bind='{{GetPrivateIP}}'

更改是-bind的参数,此时consult将呈现私有IP地址的IP地址。其他模板参数记录在hashicorp/go-sockaddr中。

 类似资料:
  • 当我在我的本地机器上运行consul和bootstrap.properties中具有以下属性的Spring Boot客户端时,我可以看到它连接、发现服务并能够使用服务发现从一个服务连接到另一个服务。Bootstrap.properties: 但是现在,我在 openshift 上安装了领事,提供了通往它的路线。我可以浏览到领事UI,并看到领事服务已注册。但是当我尝试将在本地主机上运行的客户端连接到

  • 在WSL 2上,远程访问运行在docker容器中的jupyter笔记本是否有一般方法? 仅供参考,WSL2(Ubuntu 20.04)是按照以下说明安装的: https://ubuntu.com/blog/getting-started-with-cuda-on-ubuntu-on-wsl-2

  • 问题内容: 我已经创建了一个Docker映像来测试Angular应用程序,但是无法从主机连接到Docker容器中正在运行的应用程序。 该映像是使用具有以下内容的Dockerfile创建的:EXPOSE 4200 8080 80 我使用以下命令运行docker容器:docker run -ti -p 4200:4200 angulardev / bin / bash 在容器内,我创建Angular应

  • 构建了Docker映像,但当我要运行它时,它显示以下错误: 我的操作系统是Ubuntu18.04.1LTS,我使用docker build-t doc-service和docker run doc-service。 这是我的DockerFile: 有人能帮我吗?

  • 问题内容: 我正在OSX上尝试使用docker beta,主要用于Symfony开发,但是挂载的速度非常慢。即使对于香草Symfony项目,页面加载时间也只有6秒。难以忍受!有没有人找到解决此问题的方法?试图摆脱无业游民,但我只是找不到任何合理的方法来使用docker。 问题答案: 显然,目前有一种解决方法: https://forums.docker.com/t/file-access-in-m

  • 问题内容: 我有Jenkins作业的阶段,可以使用docker测试和部署我的nodejs,我在端口3000上运行docker,但是当我尝试浏览我的docker时,它不起作用,并且我的docker没有运行 这是我的Jenkinsfile Dockerfile: 我在ubuntu服务器上通过docker- compose运行Jenkins,是我丢失还是出错了?因为我的目标是使用Jenkins来测试我的