Tag: 领事

运行领事docker健康检查的问题

我正在用gliderlabs / registrator容器运行progrium / consul容器。 我正在尝试创build运行状况检查,以监视泊坞窗容器是打开还是closures。 但是,我注意到一些非常奇怪的活动,并且能够进行健康检查。 这是我用来创build健康检查的命令: curl -v -X PUT http://$CONSUL_IP_ADDR:8500/v1/agent/check/register -d @/home/myUserName/health.json 这是我的health.json文件: { "id": "docker_stuff", "name": "echo test", "docker_container_id": "4fc5b1296c99", "shell": "/bin/bash", "script": "echo hello", "interval": "2s" } 首先我注意到,只要容器被正确停止,这个检查就会自动删除服务,但是当容器被不正确地停止时(即在节点失效时)什么也不做。 其次,我注意到docker_container_id根本就没有问题,这个运行状况检查将自己附加到它所连接到的consul节点上运行的每个容器。 我想对运行在consul节点上的每个docker容器都运行一个正常的tcp或http运行状况testing(是的,我知道我的上面的json文件运行了一个脚本,我刚刚创build了一个遵循文档示例的脚本)。 我只想让领事能够判断一个容器是停止还是运行。 我不希望我的服务在健康检查失败时自行删除。 我将如何做到这一点。 注:我发现代理健康检查的领事文件非常缺乏,模糊和不准确。 所以请不要只是链接到它,并告诉我去读它。 我正在寻找一个完整的解释,如何设置docker健康检查正确的方式。 更新:以下是如何使用最新版本的官方consul容器启动consul服务器(现在是dev版本,很快就会用生产版本更新它): #bootstrap server docker run -d \ -p 8300:8300 \ -p 8301:8301 \ -p […]

在Docker中不能链接Consul和Spring Boot应用程序

我有以下configuration的Spring Boot应用程序: spring: thymeleaf: cache: false cloud: consul: host: consul port: 8500 discovery: prefer-ip-address: true instanceId: ${spring.application.name}:${spring.application.instance_id:${random.value}} 我想运行docker-compose(Docker 1.11.2,docker-compose 1.7.1): consul: image: progrium/consul:latest container_name: consul hostname: consulhost ports: – "8400:8400" – "8500:8500" – "8600:53" command: "-server -bootstrap-expect 1 -ui-dir /ui" collector-server: container_name: collector-server image: io.thesis/collector-server ports: – "9090:9090" links: – consul:consul 不幸的是,这是行不通的,我得到:com.ecwid.consul.transport.TransportException:java.net.ConnectException:连接被拒绝。 我完全不知道为什么它不能连接到Consul,因为我可以用这种方式连接到其他系统,例如rabbitmq。 谢谢你的任何想法!

无法将registry服务注册到注册服务器

我有一个docker工人,docker-compose和Consul安装在我的本地机器上。 现在我想用注册商在Consul注册我的一项服务。 我的服务的Dockerfile很简单: FROM php:7.0-apache COPY code/ /var/www/html/ ENV SERVICE_ID=php ENV SERVICE_NAME=php-apache 此外,我有领事运行。 我可以用简单的命令来检查它: $ curl -X PUT 'Hello world ' 127.0.0.1:8500/v1/kv/msg1 $ curl 127.0.0.1:8500/v1/kv/msg1?raw Hello world 然后,我开始注册者容器,按照其中一个教程: $ sudo docker run -d –name registrator-consul -v /var/run/docker.sock:/tmp/docker.sock \ -h jacobian-VirtualBox gliderlabs/registrator \ -ip 127.0.0.1 consul://127.0.0.1:8500 当我运行上面的命令时,我在控制台中得到了一些大的关键: a25a48 … 3b69 一切看起来不错,因为我没有得到任何错误消息。 但是,如果我检查 $ docker ps 我看不到活动的图像 […]

Docker在Consul TCP健康检查周期中重用端口

例子: 时刻1:Docker运行容器A监听32781(导出端口) – > 8000(服务端口)通过TCP连接完成领事健康检查(周期10s)。 时刻2:Docker重启集装箱A并在closures时间运行集装箱B(less于10秒)。 现在端口32781是容器B(重用端口),新的容器A有另一个端口。 但下一轮领事健康检查后,港口32781就可以了,领事馆拿A箱就可以了。 如何解决这个问题?

Docker容器的双向UDP端口

我有一个领事在docker集装箱里跑。 当我启动另一个领事代理人(不在docker工人)时,它说: [WARN] memberlist: Was able to reach container_name via TCP but not UDP, network may be misconfigured and not allowing bidirectional UDP 我试图在这里形成一个集群,但领导人选举失败。 我怎样才能解决这个问题? 我在docker-compose.yml端口规范( docker-compose.yml -compose版本:1) ports: – "8300:8300" – "8301:8301" – "8301:8301/udp" – "8302:8302" – "8302:8302/udp" – "8400:8400" – "8500:8500" – "8600:8600" – "8600:8600/udp" 在Docker容器中运行的Consul1日志: Node name: '<host>' Datacenter: 'dc1' Server: true […]

在dockerfile中没有终止引用的string的语法错误

我创build了一个Dockerfile,如下所示: FROM consul COPY config-file.json /consul/config ENTRYPOINT ["consul", "agent, "-config-file=/consul/config/config-file.json"] config(config-file.json)文件如下所示: { "datacenter": "microservices", "data_dir": "/opt/consul", "log_level": "INFO", "disable_host_node_id" : true, "server": true, "bootstrap_expect" : 2, "client_addr": "0.0.0.0", "ui": true, "bind_addr": "192.168.70.20" } 然后运行容器,得到以下内容: dockerizer@docker1:~/consul$ docker run –rm -ti –network=host servery /bin/sh: syntax error: unterminated quoted string 我究竟做错了什么?

Docker的容器通讯使用Consul

我已经阅读了有关使用Consul的Docker的服务发现,但我无法理解。 你能向我解释一下,我怎么能运行两个docker集装箱,从第二个使用Consul的第一个容器主机识别并发送一些消息给它?

Ubuntu docker swarm error“docker:无法连接到Docker守护进程。 docker守护程序是否在这个主机上运行?

我正在尝试在一些Ubuntu 14.04stream浪盒上与领事build立docker swarm,但docker守护进程存在问题。 我已经有一个progrium / consul容器正在运行,并且正在运行一个swarm manager容器。 172.28.128.3是主机运行的一切,172.28.128.4是我试图启动Docker群容器的机器。 这是我的命令和输出: vagrant@ubuntu-14:~$ docker -H=172.28.128.4:2375 run -d swarm join \ > –advertise=172.28.128.4:2375 \ > consul://172.28.128.3:8500/ docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?. See 'docker run –help'. docker没有其他问题,并尝试启动守护进程,就像我在我的Mac上boot2docker给出以下输出: vagrant@ubuntu-14:~$ eval "$(docker-machine env default)" docker-machine: command not found 更新:这里是$sudo docker info和$docker info的输出(除了下面描述的一行之外,它们是完全相同的) […]

如何为Docker Swarm ManagerconfigurationDNS(和/或负载平衡)

场景: 我正在构build和configuration一个Docker Swarm集群。 我的想法是在两个分离的主机( HostA和HostB )中使用Consul作为发现后端部署两组3个虚拟机: HostA : manager0 , node0 , node1 HostB : manager1 , node2 , node3 通过这种方式,我可以在Swarmpipe理器和节点中获得所需的冗余。 不过, 我目前的情况是在一个更早,更简单的阶段 :我刚刚纺了一个Docker Swarmpipe理器,如下所示: docker \ run -d \ -p 3376:3376 \ swarm manage \ -H :3376 –advertise manager0:3376 \ –replication consul://consul0:8500/ (注意:上面的命令已经适用于这个问题,因为一些无关的论证,如TLSvalidation已经被清除。) Swarm集群的第一颗种子按预期工作: docker -H tcp://manager0:3376 version Client: Version: 1.11.2 API version: 1.23 […]

与Rancher跨容器/主机通信

我正在与Consul,Rancher和Docker进行实验。 所以我有这个REST服务在4个不同的主机上运行。 这个服务的每个实例都使用容器链接注册到一个Consul容器中。 也就是说,所有的实例都知道Consul容器。 这工作正常。 什么不工作正常的时候,领事试图对我的服务进行健康检查。 如果服务的一个实例与consul容器在同一个主机上运行,​​那么就可以工作。 但是运行在不同主机上的任何实例都将失败。 地址unrachable。 我试图以几种不同的方式提取服务实例容器IP。 1)列出容器内所有可用的notwork接口和ip。 2)容器内的“hostname -i”。 他们都是知识产权。 例如: 172.16.0.06 Rancher在同一个容器中列出IP地址如10.43.100.24 。 我的猜测是Consul应该对Rancher显示的IP执行健康检查,而不是在容器内提取的IP。 我在这里有点失落,我的服务应该如何find它应该使用在领事内部注册的IP? (我知道这不是真的如何使用领事,但问题是容器在一个主机上不能到达另一个主机上的容器..所以领事部分只是把上下文我所尝试的)