mac osx下修改 ulimit 参数_给容器设置内核参数

怎么给docker容器设置内核参数?怎么给k8s POD设置内核参数?为什么给容器设置某些内核参数之后,主机也会受影响?

容器与sysctl

内核方面做了大量的工作,把一部分sysctl内核参数进行了namespace化(namespaced)。也就是多个容器和主机可以各自独立设置某些内核参数。例如, 可以通过net.ipv4.ip_local_port_range,在不同容器中设置不同的端口范围。

如何判断一个参数是不是namespaced?

运行一个具有privileged权限的容器(参考下一节内容), 然后在容器中修改该参数,看一下在host上能否看到容器在中所做的修改。如果看不到, 那就是namespaced, 否则不是。

目前已经namespace化的sysctl内核参数:

  • kernel.shm*,

  • kernel.msg*,

  • kernel.sem,

  • fs.mqueue.*,

  • net.*.

注意, vm.*并没有namespace化。比如vm.max_map_count, 在主机或者一个容器中设置它, 其他所有容器都会受影响,都会看到最新的值。

在docker容器中修改sysctl内核参数

正常运行的docker容器中,是不能修改任何sysctl内核参数的。因为/proc/sys是以只读方式挂载到容器里面的。

proc on /proc/sys type proc (ro,nosuid,nodev,noexec,relatime)

要给容器设置不一样的sysctl内核参数,有多种方式。

方法一 --privileged

docker run --privileged -it ubuntu bash

整个/proc目录都是以"rw"权限挂载的

proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)

在容器中,可以任意修改sysctl内核参赛。

注意:如果修改的是namespaced的参数, 则不会影响host和其他容器。反之,则会影响它们。

如果想在容器中修改主机的n

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值