我在一台机器上有多个码头容器.在每个容器上运行一个进程和一个Web服务器,为进程提供一个API.
我的问题是,当默认端口为80时,如何从浏览器访问API?要能够访问docker容器内的Web服务器,请执行以下操作:
sudo docker run -p 80:80 -t -i
这样我可以从我的电脑终端:
curl http://hostIP:80/foobar
但是如何处理这个多个容器和多个Web服务器?
您可以公开多个端口,例如
原文链接:https://www.f2er.com/docker/437073.htmldocker run -p 8080:80 -t -i
或者在API容器的前面放一个代理(nginx,apache,varnish等).
更新:
执行代理的最简单的方法是将其链接到API容器,例如.有apache配置
RewriteRule ^api1/(.*)$http://api1/$1 [proxy]
RewriteRule ^api2/(.*)$http://api2/$1 [proxy]
你可以这样运行你的容器:
docker run --name api1
这可能有点麻烦,但是如果您需要重新启动api容器,因为代理容器也必须重新启动(链接在docker上相当静态).如果这成为一个问题,您可以查看诸如fig或自动更新的代理配置之类的方法:http://jasonwilder.com/blog/2014/03/25/automated-nginx-reverse-proxy-for-docker/.后面的链接也显示了用Nginx代理.
更新二:
在更现代的泊坞台版本中,可以使用user defined network而不是上面显示的链接来克服不推荐链接机制的一些不便.