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

为什么是 4096 而不是 64000000?

cat /proc/sys/net/ipv4/udp_rmem_min在主机上确实返回 64000000

我还将包含参数的文件复制到/etc/sysctl.d/并重新启动机器,结果相同。

有趣的是,当我在 Ubuntu 22 机器(裸机)上执行相同操作时,它可以工作。

那么docker从哪里读取oraclelinux 9/rhel中的sysctl值呢?
我以为它只是使用主机的一个,还是我还有其他问题?

我知道我可以使用--sysctlwith docker run,但我不能那样使用它,因为我间接使用 docker ,通过kind它似乎没有提供任何定义的可能性--sysctl

相关内容