docker update

Usage: docker update [OPTIONS] CONTAINER [CONTAINER…]

常用参数:

--blkio-weight uint16       #Block IO(相对权重),介于101000之间,或者为0禁用(默认为0--cpu-period int             #限制CPU CFS(完全公平调度程序)周期
--cpu-quota int          #限制CPU CFS(完全公平调度程序)配额
 --cpu-rt-period int        #以微秒为单位限制CPU的实时周期
--cpu-rt-runtime int        #以微秒为单位限制CPU实时运行时间
      
  -c, --cpu-shares int             #CPU shares (relative weight)
      --cpus decimal               #Number of CPUs
      --cpuset-cpus string         #允许执行的CPU(0-30,1--cpuset-mems string         #允许执行的MEMs(0-30,1--kernel-memory bytes        #Kernel memory limit
  -m, --memory bytes               #Memory limit
      --memory-reservation bytes  # 内存软限制
      --memory-swap bytes          #交换限制等于内存加交换:'-1'以启用无限制交换
      --restart string            #容器退出时要应用的重新启动策略

修改正在执行的容器:

docker update -m 30M --memory-swap 30M  897a6a09807a

要使所有正在运行的容器更新以使用核心1和1g内存:

docker update --cpuset-cpus "1" --memory "1g" $(docker ps | awk 'NR>1 {print $1}')

遇到的问题:

root@hty:/home/hty# docker update --memory "30m" --cpuset-cpus "0-3" 64f479468b7c
64f479468b7c
Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.

这是在ubuntu或其他基于Debian的系统上才会出现的问题,原因是系统默认未开启swap限制。(开启后会使系统内存占用多1%,性能下降约10%,即使没有运行docker)

开启方法:

  • 首先使用sudo -i获取系统sudo权限
  • 修改系统的/etc/default/grub file文件。使用vim在这个文件中添加一行:
GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
  • 更新系统的GRUB:
  sudo update-grub

改动在系统下次重启后生效。

docker容器 cpu memory资源限制
[https://www.cnblogs.com/zhuochong/p/9728383.html]

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐