1、docker update 简介
docker update
是用来更新一个或多个容器的配置,docker update
命令可以动态更新容器配置。可以使用这个命令来防止容器从Docker主机上消耗过多的资源。通过一个命令,可以对单个或多个容器进行限制。要指定多个容器,请提供用空格分隔的容器名称或id列表。除了--kernel-memory
选项之外,可以在运行或停止的容器上指定这些选项。在高于4.6的内核版本上,您只能在已停止的容器上更新--kernel-memory
,或在内核内存初始化的正在运行的容器上更新--kernel-memory
。
注意:windows容器不支持docker update
和docker container update
命令。
2、docker update 语法
docker update [OPTIONS] CONTAINER [CONTAINER...]
参考文档:https://docs.docker.com/engine/reference/commandline/update/
3、docker update 命令
1)更新容器的cpu-shares(--cpu-shares)
要将容器的cpu共享限制在512,首先要标识容器的名称或ID。可以使用docker ps来查找这些值。也可以使用docker run命令返回的ID。然后,执行以下操作:
docker update --cpu-shares 512 abebf7571666
2)用cpu共享和内存更新容器(-m,--memory)
为多个容器更新多个资源配置:
docker update --cpu-shares 512 -m 300M abebf7571666 hopeful_morse
3)更新容器的内核内存约束(--kernel-memory)
可以使用--kernel-memory
选项更新容器的内核内存限制。在4.6之前的内核版本中,只有当容器以--kernel-memory
启动时,才能在运行的容器上更新此选项。如果容器在没有--kernel-memory
的情况下启动,则需要在更新内核内存之前停止容器。
注意:自Docker 20.10以来,--kernel-memory
选项已被弃用。
使用以下命令启动一个容器:
docker run -dit --name test --kernel-memory 50M ubuntu bash
可以在容器运行时更新内核内存:
docker update --kernel-memory 80M test
如果启动了一个没有初始化内核内存的容器:
docker run -dit --name test2 --memory 300M ubuntu bash
更新正在运行的容器 test2 的内核内存将失败。 需要在更新 --kernel-memory
设置之前停止容器。 下次启动时,容器会使用新值。
高于(包括)4.6 的内核版本没有此限制,可以像其他选项一样使用 --kernel-memory
。
4)更新容器的重启策略(--restart)
可以在正在运行的容器上更改容器的重启策略。新的重启策略在容器上运行docker update后立即生效。
更新一个或多个容器的重启策略:
docker update --restart=on-failure:3 abebf7571666 hopeful_morse
注意:如果容器以--rm
标志启动,则不能为其更新重启策略。对于容器来说,AutoRemove
和RestartPolicy
是互斥的。
4、选项说明
命令 | 描述 | |
--blkio-weight | 块IO(相对权重),在10到1000之间, 或0禁用(默认0)。 | |
--cpu-period | 限制CPU CFS(完全公平调度器)周期 | |
--cpu-quota | 限制CPU CFS(完全公平调度器)配额 | |
--cpu-rt-period | 以微秒为单位限制CPU实时周期 | |
--cpu-rt-runtime | 以微秒为单位限制CPU的实时运行时间 | |
--cpu-shares , -c | 设置容器的 CPU 分配权重。默认值为 0, 表示容器可以使用尽可能多的 CPU 时间。 | |
--cpus | cpu个数 | |
--cpuset-cpus | 允许执行的cpu(0-3、0、1) | |
--cpuset-mems | 允许执行的MEMs (0-3, 0,1) | |
--memory , -m | 内存限制 | |
--memory-reservation | 内存软限制 | |
--memory-swap | Swap limit等于memory加上Swap: -1,表示无限制交换 | |
--pids-limit | API 1.40+ 调整容器pid限制(设置为-1表示无限) | |
--restart | 重新启动策略,在容器退出时应用 |