使用每个容器

时间:2017-02-25 23:23:22

标签: docker docker-compose

我有一个基本的docker-compose设置,包括以下内容:

  • docker bridge subnet从192.168.50.0/24开始
  • 4项服务:兔子,弹簧配置,票价,签到
  • 这些服务中的每一个都正确设置了主机名,并且能够在子网内找到彼此(192.168.50.0)。 Ips在此子网中动态归属,它们都在各自容器中的端口8080上启动。
  • 从主机可以看到网桥,并且可以使用其IP来访问容器的每个实例。

如果没有将8080以外的端口映射到docker主机,我无法解决这些主机条目。

在我的主机的/ etc / hosts中输入此条目: 192.168.50.1票价兔子配置书签入:只有当我明确地将服务的端口8080绑定到我的主机的端口8081,端口8082,端口8083 ...时才能访问服务。对于.yml文件中的每个服务。

是否有其他方法可以确保服务可以通过其dns名称发现,甚至可以从子网外部发现?

1 个答案:

答案 0 :(得分:1)

您无法将所有4个容器绑定到主机上的同一端口。每个端口只有一个容器。但是有一些解决方法:

选项1:为每个容器使用不同的端口

  • 例如,绑定端口8081,8082,8083和8084。
  • 在/ etc / hosts中,正确映射每个容器IP。
  • 连接时指定除主机名外的端口。与https://fares:8081
  • 一样

您的/ etc / hosts可能如下所示:

192.168.50.1 fares
192.168.50.2 rabbit
...

选项2:使用反向代理

您可以在docker-compose.yml中将其他 Docker容器设置为reverse proxy。反向代理容器可以绑定到端口8080,并根据主机名将请求转发到正确的容器。您不需要绑定主机上其他容器的端口,因为您的反向代理正在转发请求。有一篇博客文章详细解释了它的工作原理:http://jasonwilder.com/blog/2014/03/25/automated-nginx-reverse-proxy-for-docker/