目录

隐藏
  1. 你那个 LNMP 例子中的 docker-compose.yml 中有好多 networks,都是什么意思啊?
  2. 使用 Compose 的时候碰到 “An HTTP request took too long to complete….” 错误,怎么办?
你那个 LNMP 例子中的 docker-compose.yml 中有好多 networks,都是什么意思啊?
我写的 LNMP 多容器互通的例子: https://coding.net/u/twang2218/p/docker-lnmp/git

前面 services 下的每个服务下面的 networks,是说这个服务要接到哪个网络上。
而最后的那个总的networks下面的,是这几个网络的定义。

也就是说,nginx 接到了名为 frontend 的前端网络;mysql 接到了名为 backend 的后端网络;而作为中间的 php 既需要和 nginx 通讯,又需要和 mysql 通讯,所以同时连接了 frontend 和 backend 网络。由于 nginx 和 mysql 不处于同一网络,所以二者无法通讯,起到了隔离的作用。

关于 Docker 自定义网络,你可以看一下官方文档的介绍:
https://docs.docker.com/engine/userguide/networking/dockernetworks/#/user-defined-networks

关于在 Docker Compose 中使用自定义网络的部分,可以看官方这部分文档:
https://docs.docker.com/compose/networking/

使用 Compose 的时候碰到 “An HTTP request took too long to complete….” 错误,怎么办?
Compose 的请求超时时限是可以配置的:

export COMPOSE_HTTP_TIMEOUT=120
不过,这不是问题的解决办法,因为一般情况下不应该超时,超时的原因是因为所访问的 Docker Engine 过于繁忙,而无法响应 Compose 的请求。应该检查具体 Docker Engine 出了什么问题,是不是还在用着 CentOS 默认的 device mapper 的 loop 设备,等等。