1

我在我的笔记本电脑上运行各种容器:

X1C3:~$ docker ps
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                    NAMES
4daccb82531d        prom/prometheus:latest   "/bin/prometheus -con"   12 hours ago        Up 12 hours         0.0.0.0:9090->9090/tcp   berserk_goldstine
32c2c31e0d5f        prom/blackbox-exporter   "/bin/go-run -config."   12 hours ago        Up 12 hours         0.0.0.0:9115->9115/tcp   goofy_wescoff
7490523a3bc7        prom/node-exporter       "/bin/go-run"            2 days ago          Up 2 days                                    sharp_albattani
61303633672b        prom/alertmanager        "/bin/go-run -config."   2 days ago          Up 2 days           0.0.0.0:9093->9093/tcp   goofy_kare
89ce4f49c426        grafana/grafana          "/usr/sbin/grafana-se"   2 days ago          Up 2 days           0.0.0.0:3000->3000/tcp   berserk_wozniak

并且至少从其中一个容器中,prom/prometheus我需要与其他容器进行通信。

例如这里是一个典型的配置:

global:
 scrape_interval: 10s
 evaluation_interval: 10s
scrape_configs:
 - job_name: 'prometheus'
   target_groups:
    - targets:
      - localhost:9090
      - 192.168.88.161:9100
 - job_name: 'blackbox'
   metrics_path: /probe
   params:
     module: [icmp]
     target: [8.8.8.8]
   target_groups:
     - targets:
       - 192.168.88.161:9115

我发现我需要指定,192.168.88.161因为 localhost 不起作用。我猜是因为 localhost 似乎是该容器的本地。然而令人讨厌的192.168.88.161是,当我在家时,它只是IP。我的IP 发生了变化,因为我一直在变化。那么如何处理这个问题呢?

我推测使用X1C3.local,但我认为没有 bonjour 发现可以跨容器工作(值得怀疑!)

4

2 回答 2

1

如果您使用的是docker-machinedocker 1.9,则引用容器的新方法是通过发现服务,例如consul,再加上像registrator这样的检查器服务。

另一种类似的方法是使用swarm来管理这些服务(仍然与 consul 耦合)

在所有情况下,这意味着至少还有两个容器(一个用于 consul master,一个用于像 swarm master 或 registrator 这样的检查)。
请参阅“在 Docker Swarm 中将单独的服务发现与将其集成到集群机器有什么不同”。

这样做的好处--link是您可以按任何顺序启动容器,它们可以停止并重新启动,并且它们仍然可以从另一个中看到。
--link意味着您链接到的容器必须首先启动,它会停止并重新创建,这--link将不再有效。

发现服务方法也适用于本地主机或多个主机。(--link只能在本地工作,不能跨主机)

于 2015-11-16T05:28:52.727 回答
1

我现在开始做的是localhost在我的/etc/prometheus.ymlwith选项中使用所有服务。docker run--net=host

于 2015-11-20T04:19:52.170 回答