Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。Docker是内核虚拟化,不使用Hypervisor是不完全虚拟化,依赖内核的特性实现资源隔离。本文主要介绍Docker CLI 中 docker update 常用命令。

1、docker update 简介

docker update是用来更新一个或多个容器的配置,docker update命令可以动态更新容器配置。可以使用这个命令来防止容器从Docker主机上消耗过多的资源。通过一个命令,可以对单个或多个容器进行限制。要指定多个容器,请提供用空格分隔的容器名称或id列表。除了--kernel-memory选项之外,可以在运行或停止的容器上指定这些选项。在高于4.6的内核版本上,您只能在已停止的容器上更新--kernel-memory,或在内核内存初始化的正在运行的容器上更新--kernel-memory

注意:windows容器不支持docker updatedocker 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标志启动,则不能为其更新重启策略。对于容器来说,AutoRemoveRestartPolicy是互斥的。

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

重新启动策略,在容器退出时应用

推荐文档

相关文档

大家感兴趣的内容

随机列表