【发布时间】:2018-08-11 20:06:30
【问题描述】:
docker 新手..
是否可以在不同的端口支持多个容器但映射到同一个 docker 主机端口 80 ?
我有两个应用程序,一个在 apache 中运行,另一个在 glassfish 服务器上。
我想在 aws 的同一个 linux 实例中运行这两个容器。
有没有可能是这样的:
- 容器 1 apache EXPOSE 9090
- 容器 2 glassf EXPOSE 8080
- docker run -p 80:9090 container1
- docker run -p 80:8080 container2
已经试过了,明显得到:
Bind for 0.0.0.0:80 failed: port is already allocated
但我想知道它是否可能,如何实现,是否推荐以及为什么?
谢谢
编辑
运行它的用法:
$ docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy 然后启动任何你想要代理的容器 env var VIRTUAL_HOST=subdomain.youdomain.com
$ docker run -e VIRTUAL_HOST=foo.bar.com ... 正在运行的容器 代理必须公开要代理的端口,或者使用 EXPOSE Dockerfile 中的指令或使用 --expose 标志给 docker 运行或 docker create。
如果您的 DNS 设置为将 foo.bar.com 转发到正在运行的主机 nginx-proxy,请求将被路由到一个容器 VIRTUAL_HOST 环境变量集。
我执行了以下操作:
docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock jwilder/nginx-proxy
然后运行我的一张图片进行测试,但没有运气,我做错了什么:
docker run -e docker run -e VIRTUAL_HOST=my.host my/image
my.host 在/etc/hosts 中的位置:
127.0.0.1 localhost
127.0.0.1 my.host
另外,my/image 暴露在 8080
这不起作用,测试:my.host/app-context-root throws:
502 Bad Gateway nginx/1.13.12
【问题讨论】:
-
很高兴能对为什么不赞成投票发表评论...
-
@DavidMaze,不是骗子。已经看到了,这不是一个解决方案。
-
你问的是如何通过主机上的一个端口反向代理多个虚拟主机?
标签: docker