You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器内apt-get操作异常缓慢问题求助

Docker容器内apt-get update/apt-get install异常缓慢的排查与解决建议

问题描述

近期在Docker镜像构建或容器内执行apt-get update、apt-get install时出现异常缓慢(近乎停滞)的情况,相关输出示例:

---> Running in 04b74c43b24e
Get:1 http://security.ubuntu.com/ubuntu focal-security InRelease [114 kB]
Get:2 http://security.ubuntu.com/ubuntu focal-security/multiverse amd64 Packages [34.9 kB]
Get:3 http://security.ubuntu.com/ubuntu focal-security/universe amd64 Packages [931 kB]
Get:4 http://security.ubuntu.com/ubuntu focal-security/restricted amd64 Packages [1655 kB]
Get:5 http://archive.ubuntu.com/ubuntu focal InRelease [265 kB]
Get:6 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages [2269 kB]

已确认信息:

  • 宿主机执行相同操作无此问题
  • 尝试通过--ulimit nofile=:1024:2048参数限制容器文件描述符,无效
  • 处于代理网络,代理配置已确认正确
  • Docker版本信息:
╰─>$ docker version
Client: Docker Engine - Community
 Version:           20.10.18
 API version:       1.41
 Go version:        go1.18.6
 Git commit:        b40c2f6
 Built:             Thu Sep  8 23:11:45 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.18
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.18.6
  Git commit:       e42327a
  Built:            Thu Sep  8 23:09:37 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.8
  GitCommit:        9cd3357b7fd7218e4aec3eae239db1f68a5a6ec6
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

排查与解决建议

1. 替换Ubuntu软件源为国内镜像

默认官方源在国内访问延迟高,替换为国内镜像源可显著提升速度:

  • Dockerfile中添加替换步骤:
RUN sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list && \
    sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
  • 已运行容器内直接修改/etc/apt/sources.list后执行apt-get update

2. 调整Docker网络配置

  • 切换网络模式为host,复用宿主机网络测试:
docker run --network host -it ubuntu:focal bash

进入容器后执行apt-get update验证速度

  • 配置国内DNS服务器,编辑/etc/docker/daemon.json:
{
  "dns": ["223.5.5.5", "114.114.114.114"]
}

修改后重启Docker服务:systemctl restart docker

3. 提升apt-get并发连接数

默认并发数较低,通过配置或命令参数提升:

  • 创建/etc/apt/apt.conf.d/99parallel文件:
Acquire::http::Pipeline-Depth "5";
Acquire::http::No-Cache "true";
Acquire::Queue-Mode "access";
Acquire::http::Max-Active "20";
  • 执行命令时临时指定:
apt-get update -o Acquire::http::Max-Active=20

4. 排查网络层限制

  • 检查宿主机iptables规则,确认未限制容器网络流量
  • 测试容器网络连通性:
docker run -it ubuntu:focal bash -c "ping mirrors.aliyun.com && curl -O http://mirrors.aliyun.com/ubuntu/dists/focal/InRelease"
  • 若存在带宽限制,运行容器时添加网络权限:
docker run --network bridge --cap-add NET_ADMIN -it ubuntu:focal bash

5. 升级Docker组件

当前Docker版本较旧,部分网络bug已在新版本修复:

  • 升级Docker Engine到最新稳定版
  • 同步升级containerd、runc到兼容版本

内容的提问来源于stack exchange,提问作者dpatel257

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 02:25:45