dockernetworking反向代理没有docker组成
挑战
如上所述,我希望通过docker-compose的帮助完成与docker本身相同的目标。
我想深入了解docker,并启用在docker-compose不可用的平台上使用docker的能力。
我现在做什么(用docker工作)
1)
我使用这个docker-compose文件:
--- version: '3' services: app: build: . proxy: build: docker/proxy ports: - "80:80"
“应用程序”服务启动一个容器,该容器在端口3002上运行节点(显示在dockerfile中)
“代理”服务启动一个容器,运行一个nginx,其中包括以下的configuration:
server { listen 80; server_name app; location / { proxy_pass http://app:3002; } }
2)
然后,我将这添加到我的主机的/ etc / hosts:
127.0.0.1 app
3)
现在我运行docker-compose up
和vist http:// app ,命中节点应用程序。
很好很简单,对吧?
现在我只想和docker做同样的事情。
我试过了
1使用相同的nginxconfiguration。
2用bash脚本启动容器
为了完成这个我
- 创build了一个networking
- 将networking添加到两个容器
- 设置“应用程序”容器主机名,networking别名和DNSsearch到“应用程序”(因为我希望其中的一个选项将有所帮助)
这里的脚本:
docker network create --driver bridge dockertest_nw docker build -t dockertest_app . docker create \ --name dockertest_app_con \ --network dockertest_nw \ --hostname app \ --network-alias=app \ --dns-search=app \ dockertest_app docker build -t dockertest_proxy ./docker/proxy/ docker create \ --name dockertest_proxy_con \ --network dockertest_nw \ --hostname proxy \ --network-alias=proxy \ --dns-search=proxy \ -p 80:80 \ dockertest_proxy docker start dockertest_proxy_con docker start dockertest_app_con
不幸的是,这是行不通的。
我也知道有一个来自docker的dns服务,docker-compose以某种方式使用,我也应该用某种方式?
有没有人可以提出一些build议?
更新:只是我从nginx容器中得到了以下日志的信息,我会说nginx不能parsing“app”:
172.18.0.1 - - [13/Apr/2017:14:49:06 +0000] "GET / HTTP/1.1" 502 576 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36" "-" 2017/04/13 14:49:06 [error] 5#5: *13 connect() failed (111: Connection refused) while connecting to upstream, client: 172.18.0.1, server: app, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:3002/", host: "app"
你正在用自己的方式来绊倒自己。 所有你真正需要的是--network-alias
在容器中设置简短的表单名称app
和proxy
,除了容器名称dockertest_app
和dockertest_proxy
之外,它们将是可用的。
docker network create --driver bridge dockertest_nw docker build -t dockertest_app . docker create \ --name dockertest_app \ --network dockertest_nw \ --network-alias=app \ dockertest_app docker build -t dockertest_proxy ./docker/proxy/ docker create \ --name dockertest_proxy \ --network dockertest_nw \ --network-alias=proxy \ -p 80:80 \ dockertest_proxy docker start dockertest_proxy docker start dockertest_app
- 如何在Docker容器中configurationFlask应用程序来parsing大型的MessagePack对象?
- 如何在同一台ubuntu机器上运行两个基于angular色的dockerized应用程序
- 以NGINX为代理的多个docker容器(域)
- Docker容器,如何使用主机代理
- MySQL的Docker代理:来自主机的“丢失连接”消息
- Docker可从外部访问的registry,502代理错误,TLS握手错误
- Docker抱怨ALL_PROXY环境variables“proxy:unknown scheme:http”
- 如何使用反向代理和负载均衡器为一个虚拟机提供多个站点的可扩展Docker集群
- Docker工具箱代理configuration,Windows 7
- Jenkinspipe道和Docker插件 – 并发构build在独特的代理上
- 拒绝连接:Docker容器中的Nginx HTTPS反向代理