将容器自动映射到docker主机的/ etc / hosts,每个容器使用相同的端口
我有一个基本的docker-compose设置,包括以下内容:
- docker桥子网从192.168.50.0/24开始
- 4种服务:兔子,弹簧configuration,票价,签入
- 这些服务中的每一个都有正确设置的主机名,并且能够从子网(192.168.50.0)内find对方。 Ips在该子网中dynamic归属,并且它们都在其各自容器内的端口8080上开始。
- 在主机上,网桥是可见的,并且容器的每个实例都可以使用其ip来访问。
我不能设法解决这些主机条目没有映射到8080不同的端口到docker主机。
对于我的主机的/ etc / hosts中的这个条目:192.168.50.1 fares rabbit config book checkin:只有当我明确地将服务的端口8080绑定到我的主机端口8081,端口8082,端口8083 …服务在.yml文件中。
还有另外一种方法可以确保服务可以被dns名称发现,甚至可以从子网之外发现吗?
您不能将全部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容器设置为反向代理 。 反向代理容器可以绑定到端口8080,并根据主机名将请求转发到正确的容器。 您不需要绑定来自主机上其他容器的端口,因为您的反向代理正在转发请求。 有一篇博客文章详细解释了这是如何工作的: http : //jasonwilder.com/blog/2014/03/25/automated-nginx-reverse-proxy-for-docker/
- 结合salt,docker和Amazon EC2来托pipePython应用程序
- MySql.Data.MySqlClient.MySqlException使用ServiceStack ORMLite
- 我可以在不使用–privileged标志的情况下运行Docker-in-Docker
- SSH到Azure的Kubernetes托pipe主节点
- 当我想在Docker容器中运行cv2.imshow时,为什么会出现错误
- Dockerized Django应用程序获取错误:无法打开python文件my_project / wsgi.py
- 无法在dockerfile中创buildconda env
- 如何在debian上安装bcmath:jessie php5.6?
- jenkins和docker:没有指定uri