【Linux】Docker update 深度解析:命令、常用参数与实战示例

👨‍🎓博主简介

🏅CSDN博客专家

🏅云计算领域优质创作者

🏅华为云开发者社区专家博主

🏅阿里云开发者社区专家博主

💊交流社区: 运维交流社区 欢迎大家的加入!

🐋 希望大家多多支持,我们一起进步!😄

🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏 ⭐️ 加关注+💗


文章目录

    • [1. 什么是 docker update?](#1. 什么是 docker update?)
    • [2. 命令格式](#2. 命令格式)
    • [3. 常用参数](#3. 常用参数)
    • [4. 实战示例](#4. 实战示例)
      • [4.1 在线扩容 CPU](#4.1 在线扩容 CPU)
      • [4.2 绑定到特定核心,防止干扰其他服务](#4.2 绑定到特定核心,防止干扰其他服务)
      • [4.3 限制内存并关闭 swap](#4.3 限制内存并关闭 swap)
      • [4.4 限制进程数,避免 fork bomb](#4.4 限制进程数,避免 fork bomb)
      • [4.5 修改 restart 策略(需重启容器)](#4.5 修改 restart 策略(需重启容器))
    • [5. 常见问题与排查](#5. 常见问题与排查)
    • [6. 小结与最佳实践](#6. 小结与最佳实践)

1. 什么是 docker update?

docker update 是一个 运行时(runtime) 命令,主要用来 在线调整 一个或多个容器的 资源限制 及一些容器策略

2. 命令格式

bash 复制代码
docker update 参数 容器名称/ID

3. 常用参数

支持调整的维度及使用:

维度 参数 作用说明 使用示例
CPU --cpus 限制容器可用 CPU 核数。 docker update --cpus=1 容器名/ID
CPU --cpuset-cpus 绑定容器只能在指定 CPU 核心上运行。 docker update --cpuset-cpus=0-2,4 容器名/ID
内存 --memory, -m 内存硬限制,支持 b、k、m、g 单位。 docker update -m=512m 容器名/ID
内存 --memory-swap 内存 + swap 总和,值必须 ≥ --memory docker update --memory-swap=1g 容器名/ID
内存 --memory-reservation 软限制;系统内存紧张时回收。 docker update --memory-reservation=256m 容器名/ID
块 I/O权重 --blkio-weight 整体 I/O 权重,范围 10--1000。 docker update --blkio-weight=500 容器名/ID
块 I/O权重 --device-read-bps 按设备的读带宽限制(b/k/m/g)。 docker update --device-read-bps /dev/sda:10mb 容器名/ID
块 I/O权重 --device-write-bps 按设备的写带宽限制。 docker update --device-write-bps /dev/sda:5mb容器名/ID
块 I/O权重 --device-read-iops 按设备的读 IOPS。 docker update --device-read-iops /dev/sda:1000 容器名/ID
块 I/O权重 --device-write-iops 按设备的写 IOPS。 docker update --device-write-iops /dev/sda:800 容器名/ID
进程数 --pids-limit 容器内最大进程/线程数,防止 fork-bomb。 docker update --pids-limit=100 容器名/ID
重启策略 --restart 容器退出后的重启策略。 (如 no、always、unless-stopped、on-failure) 需重启容器生效。 docker update --restart=no 容器名/ID

⚠️ 注意:docker update 不支持修改环境变量、端口映射、网络模式、挂载卷等容器启动时指定的配置。

4. 实战示例

cpu、内存、磁盘IO等基本都是在HostConfig中,所以在验证的时候命令是:docker inspect test -f '{``{.HostConfig.要验证的信息json名称}}'

  • 初始创建容器:
bash 复制代码
docker run -itd --name test --cpus 1 --restart=always test:latest

4.1 在线扩容 CPU

bash 复制代码
# 容器创建时 1 核
# 业务高峰,临时加到 2 核
docker update --cpus 2 test

验证(可使用如下命令查看该容器多少核cpu):

bash 复制代码
docker inspect test -f '{{.HostConfig.NanoCpus}}' | awk '{printf "%.2f 核\n", $1/1000000000}'

4.2 绑定到特定核心,防止干扰其他服务

bash 复制代码
docker update --cpuset-cpus 2-3 test

验证:

bash 复制代码
docker inspect test -f '{{.HostConfig.CpusetCpus}}'

4.3 限制内存并关闭 swap

bash 复制代码
docker update --memory 512m --memory-swap 512m test
# memory-swap 与 memory 相等 => 禁止 swap

验证:

bash 复制代码
docker inspect test -f '{{.HostConfig.Memory}}' | awk '{printf "%d M\n", $1/1048576}'
docker inspect test -f '{{.HostConfig.MemorySwap}}' | awk '{printf "%d M\n", $1/1048576}'

4.4 限制进程数,避免 fork bomb

bash 复制代码
docker update --pids-limit 200 test

验证:

bash 复制代码
docker inspect test -f '{{.HostConfig.PidsLimit}}'

若是返回<nil>,表示创建时没有设置进程数,也就是等于无限制

4.5 修改 restart 策略(需重启容器)

创建容器时配置了开机自启,然而我现在新创建了个容器,需要把之前容器的开机自启关了,命令如下:

bash 复制代码
docker update --restart no test
docker restart test   # 必须重启容器才生效

验证:

bash 复制代码
docker inspect test -f '{{.HostConfig.RestartPolicy.Name}}'

5. 常见问题与排查

  1. 更新没生效?

    • 必须容器处于 running 状态。
    • 某些旧内核不支持 cgroup v2,组合参数可能失败。
  2. Swap 限制失败?

    • 宿主机需要启用 swapaccount=1(GRUB 内核参数)。

6. 小结与最佳实践

  • 上线前 :在 docker run 或编排文件里预设合理资源。
  • 运行时 :利用 docker update 动态调整。
  • 监控 :结合 docker stats 观察实际用量。
  • 批量管理 :用 Ansible、Docker SDK、shell 脚本封装 docker update 调用。

🐋 希望大家多多支持,我们一起进步!😄

🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏 ⭐️ 加关注+💗

相关推荐
mooyuan天天1 天前
Cobalt Strike渗透生成 linux http Beacon不生效bug分析与解决方法
linux·内网渗透·横向移动·cobalt strike
赖small强1 天前
【音视频开发】Linux 平台图像处理与视频录制全流程指南 (Ingenic T41)
linux·图像处理·音视频·isp·视频录制
vortex51 天前
Docker 逃逸常见利用方式
运维·docker·容器
0wioiw01 天前
Docker(Portainer)
运维·docker·容器
w我是东山啊1 天前
ARP的具体过程和ARP欺骗
linux·服务器·网络
橙露1 天前
PLC编程语言大比拼:特性解析与场景选型指南
大数据·linux·运维
珠海西格电力1 天前
零碳园区数字感知基础架构规划:IoT 设备布点与传输管网衔接设计
大数据·运维·人工智能·物联网·智慧城市·能源
༺๑Tobias๑༻1 天前
国内可用的DOCKER 镜像源
运维·docker·容器
The Chosen One9851 天前
【Linux】制作进度条小程序、git入门 (add、commit、push三板斧)以及git的其他问题
linux·运维·git
Crazy________1 天前
45Ansible Roles:标准化部署的终极利器
linux·运维·服务器