Назад | Перейти на главную страницу

Как сокет unix, совместно используемый через том Docker, работает по сравнению с TCP?

Мне интересно, как Docker управляет сокетом unix, когда он используется в контейнерах, и как это влияет на производительность по сравнению с использованием TCP.

Я пытаюсь настроить docker-compose для создания контейнеров php-fpm, nginx и mysql и настроить nginx для использования fastcgi_pass в php-fpm через сокет unix вместо TCP.

Это потому, что я развертываю набор контейнеров в AWS ECS с помощью Fargate. Поскольку Fargate использует один и тот же ENI для разных контейнеров, я не могу установить свои ссылки на имя хоста конкретного контейнера, но я могу поделиться томом, чтобы совместно использовать сокет php-fpm.

Между прочим, я знаю, что могу настроить связь nginx с php-fpm через TCP, используя localhost на ECS, и переключить его на ссылки контейнера с помощью docker-compose с оговоркой, что мне понадобится использовать ECS на основе EC2 (а не fargate ).

Помимо изучения того, как Docker управляет общими сокетами, я хочу знать, есть ли какие-либо недостатки в использовании сокета Unix на ECS. И если каким-то образом драйвер тома, который использует Docker, повлияет на производительность.