与 TCP 相比,通过 Docker 卷共享的 unix 套接字如何工作?

与 TCP 相比,通过 Docker 卷共享的 unix 套接字如何工作?

我想知道当 unix 套接字在容器之间共享时 Docker 如何管理它,以及与仅使用 TCP 相比它如何影响性能。

我想要完成的是设置 docker-compose 来构建 php-fpm、nginx 和 mysql 容器,并设置 nginx 以通过 unix 套接字而不是 TCP 使用 fastcgi_pass 到 php-fpm。

这是因为我正在使用 Fargate 将一组容器部署到 AWS ECS。由于 Fargate 在容器之间共享相同的 ENI,因此我无法将引用设置为特定容器的主机名,但我可以共享卷以共享 php-fpm 套接字。

顺便说一句,我知道我可以通过使用 ECS 上的 localhost 通过 TCP 设置 nginx 到 php-fpm 通信,并使用 docker-compose 将其切换到容器链接,但需要注意的是,我需要使用基于 EC2 的 ECS(而不是 fargate)。

除了了解 Docker 如何管理共享套接字之外,我还想知道在 ECS 上使用 Unix 套接字是否有任何缺点。以及 Docker 使用的卷驱动程序是否会以某种方式影响性能。

相关内容