不要在nginx config中对容器的ip进行硬编码,docker link将链接机器的主机名添加到容器的hosts文件中,您应该能够按主机名ping。
编辑:Docker 1.9 Networking不再需要您链接容器,当多个容器连接到同一网络时,它们的主机文件将被更新,以便它们可以通过主机名相互访问。
每次docker容器从映像启动(甚至停止/启动现有容器)时,这些容器都会获得docker主机分配的新IP。这些ip与您的实际计算机不在同一子网中。
查看docker链接文档(这是compose在后台使用的内容)
但
docker-compose在链接和公开文档中更清楚地解释了
链接
links: - db - db:database - redis别名名称的条目将在此服务的容器内的/ etc / hosts中创建,例如:
172.17.2.186 db172.17.2.186 database172.17.2.187 redis暴露
在不将端口 发布到主机的情况下 公开端口-只有 链接的服务 才能 访问 它们。只能指定内部端口。
如果您设置项目以通过环境变量获取端口和其他凭据,则链接会自动设置一堆系统变量:
要查看哪些环境变量可用于服务,请运行
docker-compose run SERVICE env。name_PORT完整网址,例如DB_PORT = tcp://172.17.0.5:5432
name_PORT_num_protocol完整网址,例如
DB_PORT_5432_TCP=tcp://172.17.0.5:5432name_PORT_num_protocol_ADDR容器的IP地址,例如
DB_PORT_5432_TCP_ADDR=172.17.0.5name_PORT_num_protocol_PORT公开的端口号,例如
DB_PORT_5432_TCP_PORT=5432name_PORT_num_protocol_PROTO协议(tcp或udp),例如
DB_PORT_5432_TCP_PROTO=tcpname_NAME完全合格的容器名称,例如
DB_1_NAME=/myapp_web_1/myapp_db_1



