Как установить размер буфера udp для контейнера Docker? - PullRequest
0 голосов
/ 18 февраля 2019

Я хотел бы установить размер буфера UDP для контейнера докера.Хотя размер буфера UDP является настройкой, относящейся к ядру, и соответствует настройке хоста, я вижу, что не вижу настройки моего хоста размера буфера, влияющего на мой контейнер.

Вотчто я пробовал:

на хосте

sysctl -w net.core.rmem_default = 4194304
sysctl -w net.core.rmem_max = 4194304

и для проверки ( на хосте )

sysctl net.core.rmem_default
net.core.rmem_default = 4194304

sysctl net.core.rmem_max
net.core.rmem_max = 4194304

Но когда я бегу в контейнере (скажем, в альпийском).

docker run -it alpine

и в альпийском пепле

sysctl net.core.rmem_default
sysctl: error: 'net.core.rmem_default' is an unknown key

То же самое происходит с rmem_maxтакже.

Однако, к моему удивлению, я вижу

sysctl net.core.rmem_default
net.core.somaxconn = 128

. Я могу установить вышеупомянутое в Docker-контейнере, используя аргумент --sysctl.

docker run -it --sysctl net.core.somaxconn=125 alpine
/ # sysctl net.core.somaxconn
net.core.somaxconn = 125

Но мне нужны размеры rmem_default и rmem_max.

Если эта опция не указана с помощью флага --sysctl и что настройка зависит от хост-машины, то

Как я могу доказать, что размер буфера в контейнере такой же, как у хоста?

Более того, во время многих тестов я узнал, что пакеты отбрасываются (ядумаю, это из-за некоторого установленного небольшого размера буфера).

Я также пытался записать в /proc/sys/net/core/rmem_default в контейнере, но получил , не может быть ошибка статистики .Я не понял, почему нет такого файла как rmem_default и тому подобного (rmem_max и т. Д.), Который находится на хосте в докере /proc.

Я слышал, что хост /proc устанавливается на контейнер.Это правда?Кажется, он не рассматривает описанный выше сценарий.

Кроме того, редактирование sysctl.conf и вызов sysctl -p также не помогли.

Не стесняйтесь перенести этот вопрос в Unix.stackexchange.com, если в этом есть смысл.

...