Tag: 领事

Docker CMD评估与ENTRYPOINT

我有一个Dockerfile属于理解CMD和ENTRYPOINT如何交互的matrix中的exec_entry p1_entry /bin/sh -c exec_cmd p1_cmd类别。 行为不是我所期待的。 我期待/bin/sh -c exec_cmd p1_cmd先评估,然后传递到exec_entry p1_entry 。 我正在观察的是/bin/sh -c exec_cmd p1_cmd从字面上被传递到exec_entry p1_entry ,我认为这很有趣。 为了提供更多的上下文,我特别从现有的Dockerfile中派生出一个新的Dockerfile,其中父代有: ENTRYPOINT ["/bin/registrator"] 我想从我的Dockerfile传递特定的命令行参数: FROM gliderlabs/registrator:v7 CMD echo "-ip=$EXTERNAL_IP consul://$CONSUL_HOST" 当我在一个容器中运行我的Docker镜像时: $ docker run –rm –name=test-registrator –volume=/var/run/docker.sock:/tmp/docker.sock -e "EXTERNAL_IP=<some-ip>" -e "CONSUL_HOST=<some-consul-hostname>:8500" my/registrator 我得到以下错误: 2016/12/28 19:20:46 Starting registrator v7 … Extra unparsed arguments: -c echo "-ip=$EXTERNAL_IP consul://$CONSUL_HOST" […]

Docker和领事通过例子:需要澄清

我正在与Consul学习Docker-Swarm,发现了一些我不太了解的问题。 基本上,我用Consul Sevice Discovery创build了一个Docker-Swarm集群(node-01和node-02)。 然后,我运行一个多容器应用程序(快速应用程序与Mongo),我可以看到它正在节点02上运行。 为了运行它,我必须进入并find我的node-02的IP地址,然后打开浏览器。 它工作正常,只是我期望我可以去一些虚拟IP(或DNS),并且在这个例子中,Consul服务(或Swarm)会将它转换成正确的IP地址node-02。 接下来的一点是,当我loginConsulnetworking用户界面时,我期待看到“节点”菜单下的节点,但似乎并非如此。 我也希望能够看到我在node-01和node-02上运行的“应用程序”或“服务”,但情况并非如此。 我的问题是: 有人可以解释为什么我需要手动找出在我的应用程序正在运行的群集中的哪个节点。 无法想象这是在更大的部署中完成的。 有人可以解释为什么我在Consul UI中看不到“节点”和“服务”吗? 注意:虽然我一直在为博客文章(截图)logging完整设置,但希望查看更多详细信息,所以尽量缩短。 转到博客文章

Docker注册人:连接被拒绝

[root@node1 sysconfig]# docker run -d -v /var/run/docker.sock:/tmp/docker.sock -h node1 progrium/registrator consul://ipaddress:8500 fcb44e6877b12d45c1ddbdf48eaeb210ca632bfbbfd695be96d736330987f10d [root@node1 sysconfig]# docker logs fcb44e6877b12d45c1ddbdf48eaeb210ca632bfbbfd695be96d736330987f10d 2014/10/07 00:33:51 registrator: Using consul registry backend at consul:ipaddress//:8500 2014/10/07 00:33:51 registrator: dial unix /tmp/docker.sock: connection refused lxc-start: The container failed to start. lxc-start: Additional information can be obtained by setting the –logfile and –log-priority options. 我该如何解决? 谢谢-

使用consuldynamic地将IP和端口导出到另一个Docker容器

目标:从phpapp容器提供的web页面对http:// $ IP:$ PORT / api / container.json进行XHR调用, 而不用为microservice api容器的IP和端口硬编码环境variables 。 http:// CONSULHOST:8500 / v1 / catalog / service / api将为我的API微服务公开configuration。 例: [{"Node":"node", "Address":"123.1.2.3", "ServiceID":"163b5be3-5450-4cac-8416-c1630723bc42-n1:microlith_micro-hipchat_1:443", "ServiceName":"hipchat", "ServiceTags":["primary"], "ServiceAddress":"123.234.234.234", "ServicePort":32772 }] 我正在寻找从该API端点上面列出的ServiceAddress和ServicePort端口,通过在phpapp Docker容器中dynamic调用API而不用硬编码信息。 然后,我可以在前端 Web浏览器中将此信息用作对http:// IP_OF_APP_CONTAINER的PUBLIC调用:PUBLIC_PORT / api / container.json 我已经安装了注册器的 领事 ,都在Docker Swarm中工作。 我不想为我的微服务configuration硬编码。它必须使用Consul或环境dynamic创build。 我不想对Consul IP进行编码。 它可以以某种方式传递,但我必须能够通过bash构build脚本来完成。 phpapp容器被链接到api容器,但是这似乎没有暴露前端端口,只有IP。 我做了一个我的用例图: docker-compose -> swarm -> phpapp container […]

微服务和随机端口服务发现

我的问题是关于在几个主机之间传播的服务的微服务和服务发现。 设置如下: 2个docker主机(主机A和主机B) Consul服务器(服务发现) 假设我有两项服务: 服务A 服务B 服务B部署10次(随机端口):主机A 5次,主机B 5次。 例如,当服务A与服务B通信时,它向服务B.example.com发送请求(硬编码)。 为了获得IP和端口,服务A应该向Consul服务器查询SRVlogging。 它将得到10个ip:port对,为此客户端应该使用一些负载均衡逻辑。 有没有一个更简单的方法来处理这个问题,而我没有为这个问题开发一个客户端parsing器(+ LB)库? 有没有像已经实施的地方? 我做错了吗?

如何使用Docker Swarm和Consul启用更快的容器重新安排?

对于我的环境的一些背景: 我有docker swarm在3个ubuntu 14.04stream浪盒上运行。 群主在一台机器(有领事)上运行,另外两台机器正在运行群体工作人员join到主人。 我在文档页面https://docs.docker.com/swarm/install-manual/上设置了环境。 它工作正常,以便从我的主机运行任何docker -H :4000 <some_docker_command>工作正常。 在我的两名工作人员上运行gliderlabs / registrator容器时,服务发现是激活的。 问题: 群集中的任何更改(例如节点或容器故障)以及群集(使用标记-e "reschedule:on-node-failure"创build的容器-e "reschedule:on-node-failure" )的过程在大约30-45秒内发生。 通过比较,当我在CoreOS系统上运行舰队和etcd时,容器重新调度和节点故障通知通常在5秒内发生。 有什么方法可以改变consul和docker swarm中的一些设置,以加速所有的事情,达到与我在CoreOS上使用的机群和etcd相似的水平? 如果是这样,我需要做什么? tldr:我正在运行与领事集群 ,容器reschedualing和更改docker -H :4000 ps的输出docker -H :4000 ps不会发生,直到约30 – 45秒后节点下降。 我怎样才能缩短这段时间?

春季启动应用程序无法链接在docker的领事

我试图用领事作为发现服务,另外两个春季启动应用程序向领事登记; 并把它们放入docker; 以下是我的代码:应用程序: server: port: 3333 spring: application: name: adder cloud: consul: host: consul port: 8500 discovery: preferIpAddress: true healthCheckPath: /health healthCheckInterval: 15s instanceId: ${spring.application.name}:${spring.application.instance_id:${server.port}} 2 docker-compose.yml consul1: image: "progrium/consul:latest" container_name: "consul1" hostname: "consul1" command: "-server -bootstrap -ui-dir /ui" adder: image: wsy/adder ports: – "3333:3333" links: – consul1 environment: WAIT_FOR_HOSTS: consul1:8500 还有另一个类似的问题在Docker中不能链接Consul和Spring Boot应用程序 ; 答案build议,应用程序应该等待领事充分利用depends_on工作,我尝试了,但没有工作; […]

无法从主机查询领事DNS接口

我能够查询我的远程领事容器的其余服务即。 curl my-ip:8500/v1/catalog/services {"consul":[],"nginx-80":[],"redis":[]} curl my-ip:8500/v1/catalog/service/redis [{"Node":"consul","Address":"172.17.0.3","ServiceID":"954f32f077ed:redis:6379","ServiceName":"redis","ServiceTags":null,"ServiceAddress":"","ServicePort":32768}] 但是,当我尝试领事的DNS界面 dig @my-ip -p 8600 redis.service.consul ; <<>> DiG 9.8.3-P1 <<>> @45.33.119.251 -p 8600 redis.service.consul ; (1 server found) ;; global options: +cmd ;; connection timed out; no servers could be reached 我不知道如果我的查询格式不正确,或者我如何启动容器有问题。

Docker领事服务ip广告作为内部docker的ip

我正在一个docker工作领事,官方领事形象,我有一个服务向领事登记。 服务注册,但是当轮询其DNS服务时,领事报告的IP是用于联系Consul代理的内部dockerIP。 dig @localhost -p 8600 address-norm.service.consul ;; QUESTION SECTION: ;address-norm.service.consul. IN A ;; ANSWER SECTION: address-norm.service.consul. 0 IN A 172.17.0.3 而不是172.17.0.3我想领事把服务IP改为Consuls主机IP,因为服务隐藏在这台主机上,只露出它所需要的端口。 我不使用Registrator ,我公开的服务已经集成了Spring Cloud Consul API。 编辑: 这里是我用来在Docker中启动领事的命令,我现在的解决scheme是一个使用HTTP API并提取IP地址和端口的python脚本。 docker run -d –name consul –net=host consul agent -server -bootstrap \ -node docker -ui -client=0.0.0.0 -bind=$NET_IP -advertise=$NET_IP Net_IP只是运行docker的主机的本地networkingIP

范围“全局”的数据存储未初始化

我想用consul在两台物理机器之间build立一个覆盖networking,但是它失败了,所以我只用一台机器尝试。 我这样做: consul agent -server -bootstrap -data-dir /tmp/consul -bind=192.168.1.139 -node agent-one docker network create -d overlay mynetwork 但它给了我一个错误。 我在/etc/default/docker –cluster-store consul://localhost:8500 –cluster-advertise 192.168.1.139:2375设置了–cluster-store consul://localhost:8500 –cluster-advertise 192.168.1.139:2375并执行service docker restart 。 我不知道这件事。 我用Ubuntu的,docker1.13,领事0.7.5