У меня есть приложение фляги Python, работающее внутри док-контейнера. И я использую Test-DbaNetworkLatency
для проверки задержки в сети между моим приложением и SQL Server (работающим в помещении). Я обнаружил, что задержка в сети очень медленная, когда она запускается из док-контейнера, но очень быстрая, когда я работаю на хосте Mac. Контейнер Docker основан на ubuntu
, и я установил powershell
на нем. Test-DbaNetworkLatency
работает от powershell. Я также установил powershell
в моей локальной Mac OS.
Результат из моей локальной версии:
ExecutionCount : 1
Total : 220.91 ms
Average : 220.91 ms
ExecuteOnlyTotal : 154.21 ms
ExecuteOnlyAverage : 154.21 ms
NetworkOnlyTotal : 66.69 ms
, но результат из контейнера Docker:
ExecutionCount : 1
Total : 1.23 s
Average : 1.23 s
ExecuteOnlyTotal : 282.52 ms
ExecuteOnlyAverage : 282.52 ms
NetworkOnlyTotal : 946.88 ms
Вы видите, что при запуске из докера возникает большая задержка в сети. Что-то не так связано с докером?
Если я пропингую экземпляр от контейнера и локально, то не сильно отличается. Но я вижу производительность отличается, когда SQL-запрос отправляется из контейнера и локально. Вот почему мне нужно Test-DbaNetworkLatency
для проверки задержки в сети.
После некоторого тестирования я обнаружил, что если я введу команду Test-DbaNetworkLatency
внутри pwsh -Command "Test-DbaNetworkLatency ... "
, она будет очень медленной. Но если я запускаю pwsh
, чтобы переключиться на команду powershell, то он будет работать так же быстро, как и мой локальный. Но как я могу определить dockerfile, чтобы позволить контейнеру инициализировать powershell
, позвольте мне указать powershell
скрипт как ENTRYPOINT?