docker는 호스트의 sysctl 값을 사용하지 않습니다.

docker는 호스트의 sysctl 값을 사용하지 않습니다.

저는 oraclelinux 9 Linux 호스트에서 Linux 컨테이너를 실행하고 있습니다(호스트 자체는 가상 머신에서 실행 중입니다).
docker는 어디에서 sysctl 매개변수를 읽나요?

docker에서 사용하는 기본 sysctl 값을 변경해 보았습니다.

이를 위해 호스트 시스템에서 다음 단계를 수행했습니다.

  • sysctl -w net.ip4.udp_rmem_min=64000000
  • sysctl -a | grep ip4.udp_rmem_min-> 64000000
  • systemctl restart docker(그냥 저장하려고)
  • docker run --rm -it oraclelinux:9

컨테이너에

  • sysctl -a | grep ip4.udp_rmem_min-> 4096

왜 64000000 대신 4096인가요?

cat /proc/sys/net/ipv4/udp_rmem_min호스트에서 64000000을 반환합니다.

또한 매개변수가 포함된 파일을 복사하고 /etc/sysctl.d/컴퓨터를 다시 시작했는데 결과는 동일했습니다.

흥미롭게도 Ubuntu 22 시스템(베어메탈)에서 동일한 작업을 수행하면 작동합니다.

그렇다면 docker는 oraclelinux 9/rhel에서 sysctl 값을 어디에서 읽습니까?
그냥 호스트의 것을 사용하는 줄 알았는데, 아니면 뭔가 다른 문제가 있는 걸까요?

--sysctlwith 을 사용할 수 있다는 것을 알고 있지만 docker rundocker를 간접적으로 사용하고 있기 때문에 그런 식으로 사용할 수 없습니다. kind이를 통해 정의된 가능성을 제공하지 않는 것 같습니다.--sysctl

관련 정보