在docker中ubuntu的apt-get慢的优化办法

apt-get慢的优化办法

      • 1. 选择一个更快的镜像源
      • 2.使用 `apt-get` 的 `Acquire::http` 选项
      • 3. 其他通用优化
      • 4.修改 `/etc/apt/sources.list.d/debian.source`
      • 5.如果 `/etc/apt/sources.list.d/` 中有多个文件
      • 6.在 Docker 中修改源(debian修改办法)

1. 选择一个更快的镜像源

Debian(和 Ubuntu)的官方镜像源可能因地理位置和网络条件而速度不同。选择一个地理位置靠近你的镜像源通常能显著提高下载速度。

  1. 查找最近的镜像源:你可以访问 Debian 的镜像列表来找到一个离你较近的镜像源。

  2. 修改 sources.list 文件:编辑 /etc/apt/sources.list 文件,将现有的源替换为选择的镜像源。例如,如果你选择了中国的清华大学镜像源,可以这样配置:

    deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free
    deb-src http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-freedeb http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free
    deb-src http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-freedeb http://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free
    deb-src http://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free
    

    修改 Dockerfile 来自定义源:

    FROM debian:bookwormRUN sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list && \sed -i 's/security.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list && \apt-get update && apt-get install -y YOUR_PACKAGE
    

    替换 YOUR_PACKAGE 为你需要安装的包。

2.使用 apt-getAcquire::http 选项

通过使用 Acquire::http 选项,可以调整 apt-get 的一些网络参数,例如重试次数或超时时间,来尝试解决网络缓慢的问题。

在 Dockerfile 中使用这种方式:

FROM debian:bookwormRUN apt-get -o Acquire::http::Timeout=5 -o Acquire::Retries=3 update && \apt-get install -y YOUR_PACKAGE

3. 其他通用优化

  • 并行下载apt-get 支持并行下载,可以在 /etc/apt/apt.conf.d 下创建一个配置文件来启用这一特性。

    echo 'Acquire::http {No-Cache=True;}; Acquire::Retries=3; Acquire::https::Timeout=5; Acquire::http::Timeout=5;' > /etc/apt/apt.conf.d/99parallel
    
  • 清理缓存:运行 apt-get update 后,清理不必要的缓存,可以减少 Docker 图像的大小。

    RUN apt-get update && apt-get install -y YOUR_PACKAGE && \rm -rf /var/lib/apt/lists/*
    

如果在你的 Debian 系统中没有 /etc/apt/sources.list 文件,但有 /etc/apt/sources.list.d/debian.source 文件,这表明你的软件源配置被分散在了 sources.list.d 目录下的多个文件中。这是一种组织 APT 源的方式,使得管理多个源更加方便和清晰。

4.修改 /etc/apt/sources.list.d/debian.source

  1. 编辑 debian.source 文件:直接编辑这个文件,将现有的源替换为更快的镜像源。使用 nano 或你喜欢的任何文本编辑器来编辑这个文件。例如:

    sudo nano /etc/apt/sources.list.d/debian.source
    
  2. debian.source 中替换内容:找到文件中的现有 Debian 源,并将它们替换为你选择的镜像源。以清华大学的镜像源为例,你可能会把内容改为:

    deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free
    deb-src http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-freedeb http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free
    deb-src http://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-freedeb http://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free
    deb-src http://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free
    

    保存并退出编辑器。

5.如果 /etc/apt/sources.list.d/ 中有多个文件

有时 /etc/apt/sources.list.d/ 目录下会有多个文件,你应该查看这些文件来确定所有的 APT 源配置。

  1. 列出所有源配置文件

    ls /etc/apt/sources.list.d/
    
  2. 逐个检查和修改

    对于目录下的每一个 .list.source 文件,重复上述的编辑过程。

    sudo nano /etc/apt/sources.list.d/your-other-sources.list
    

6.在 Docker 中修改源(debian修改办法)

如果你在 Dockerfile 中设置 Debian 环境,没有 sources.list 而是 /etc/apt/sources.list.d/debian.source,你可以按以下方式修改 Dockerfile:

FROM debian:bookworm# 替换源
RUN sed -i 's|deb.debian.org|mirrors.tuna.tsinghua.edu.cn|g' /etc/apt/sources.list.d/debian.source && \sed -i 's|security.debian.org|mirrors.tuna.tsinghua.edu.cn|g' /etc/apt/sources.list.d/debian.source# 安装软件
RUN apt-get update && apt-get install -y YOUR_PACKAGE# 清理缓存
RUN rm -rf /var/lib/apt/lists/*

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/13741.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

K8s-yaml文件

一.Yaml文件详解: Kubernetes 支持 YAML 和 JSON 格式管理资源对象 JSON 格式:主要用于 api 接口之间消息的传递YAML 格式:用于配置和管理,YAML 是一种简洁的非标记性语言,内容格式人性化,较易读 YAML 语…

14、设计模式之访问者模式

访问者模式 在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元…

汽车IVI中控开发入门及进阶(十八):显示技术之Frame Buffer帧缓冲器

Frame Buffer帧缓冲器(帧缓冲器,有时是帧存储器)是随机存取存储器(RAM)的一部分,包含驱动视频显示器的位图。它是一个内存缓冲区,包含表示完整视频帧中所有像素的数据。现代视频卡的核心包含帧缓冲电路。该电路将内存中的位图转换为可以在计算机监视器上显示的视频信号。…

每日5题Day9 - LeetCode 41 - 45

每一步向前都是向自己的梦想更近一步,坚持不懈,勇往直前! 第一题:41. 缺失的第一个正数 - 力扣(LeetCode) 今天这道题没有ac,写不动了,下次再通过吧,先给个半成品下次回…

MySQL主从复制+读写分离(ShardingJDBC)

MySQL主从复制读写分离 MySQL主从复制介绍二进制日志: MySQL的主从复制原理如下搭建主从复制准备工作主库配置从库配置 测试 读写分离案例ShardingJDBC介绍数据库环境初始工程导入读写分离配置测试1). 保存数据2). 修改数据3). 查询数据4). 删除数据 MySQL主从复制 …

音频数据集大全(2)-语音合成

1、Speechocean762 简介:一个开源语音语料库,专为发音评估设计。该语料库包含来自250名非母语人士的5000个英语发音,其中一半的人是儿童。五位专家对每个发音进行了句子级、词级和音素级的注释。 该语料库允许用于商业和非商业目的。 下载…

adb 汇总

常用命令 adb devices 查看链接设备列表 adb kill-server 关闭并清楚所有链接 adb connect 设置链接 adb tcpip 该条命令是设置网络adb监听的端口,5555是默认,也可以设置其他的,在安卓设备重启后会失效,不需要root权限&#x…

vue 拷贝

在 Vue.js 中,拷贝对象或数组是常见的操作,尤其是在处理状态管理或数据变更时。Vue 2 和 Vue 3 都提供了多种方法来实现对象和数组的拷贝。以下是详细的说明和示例: Vue 2 中的拷贝 1. 浅拷贝 浅拷贝只复制对象或数组的第一层属性,深层属性仍然引用原对象或数组。 使用 …

【C++】多态(多态的原理)

在本篇博客中,作者将会带领你深入理解C中的多态。 声明!!!本代码以及讲解都是在32位机器下进行完成的,64位机器下会有所不同,但大同小异。 一.多态的概念 什么是多态? 多态就是不同的对象去做…

Linux如何通过md5校验远程传输的内容的完整性(随手记)

对需要校验的文件生成md5值,并保存 find /etc/ -type f | xargs md5sum > etc.md5校验 md5sum --check etc.md5Linux 中的 md5sum 命令 md5sum 是一个在 Linux 和 Unix 系统中广泛使用的命令行工具,用于计算和检查文件的 MD5(Message D…

cudnn是什么

NVIDIA cuDNN(CUDA Deep Neural Network)是用于深度神经网络的GPU加速库。 它强调性能、易用性和低内存开销。 NVIDIA cuDNN可以集成到更高级别的机器学习框架中,如加州大学伯克利分校的流行caffe软件。简单的,插入式设计可以让…

bash: nvidia-smi: command not found

服务器突然输入: nvidia-smi 出现: bash: nvidia-smi: command not found 确认nvidia-smi的安装路径,通常其位于/usr/bin/目录下,用如下的命令来检查: ls /usr/bin/nvidia-smi如果文件不存在,则 cd /…

简易CAD程序:Qt多文档程序的一种实现

注&#xff1a;文中所列代码质量不高&#xff0c;但不影响演示我的思路 实现思路说明 实现DemoApplication 相当于MFC中CWinAppEx的派生类&#xff0c;暂时没加什么功能。 DemoApplication.h #pragma once#include <QtWidgets/QApplication>//相当于MFC中CWinAppEx的派生…

以太坊(3)——智能合约

智能合约 首先明确一下几个说法&#xff08;说法不严谨&#xff0c;为了介绍清晰才说的&#xff09;&#xff1a; 全节点矿工 节点账户 智能合约是基于Solidity语言编写的 学习Solidity语言可以到WFT学院官网&#xff08;Hello from WTF Academy | WTF Academy&#xff09;…

以x为界,分隔链表为两个分区,各分区内元素相对位置不变

题目描述&#xff1a; 题目思路&#xff1a; 1.设置两个头指针表示两个分区&#xff0c;并对每个分区设置相对于的遍历指针&#xff0c;指向分区链表链尾 2.设置原链表的遍历指针&#xff0c;判断指针所指元素是否小于目标值x&#xff0c;小于的话将结点添加到第一个分区末尾…

C# 中combobox 控件初始化

怎么获取绑定数据的combobox的选中值及选中text 1、绑定combobox的代码如下&#xff1a; DataTable LDT_CodeType Models.MoCodefile.GetCodeType(); if (LDT_CodeType ! null) { cboxCtype.DataSource LDT_CodeType; cboxCtype.DisplayMember codetypename; cboxCtype.Val…

搭建电商电子商务平台有哪些好用的电商API数据采集接口?

电商API接口主要用于帮助开发者将电商功能集成到自己的应用程序中&#xff0c;实现诸如商品检索、商品价格数据获取、订单处理、支付、物流跟踪等功能。以下是一些常用的电商API接口提供商&#xff1a; 主流电商平台API&#xff1a; 淘宝开放平台&#xff1a;提供淘宝、天猫、…

探索Ollama——入门:如何在本地环境中搭建和自定义大型语言模型

探索Ollama——入门&#xff1a;如何在本地环境中搭建和自定义大型语言模型 介绍Ollama 在当今快速发展的人工智能时代&#xff0c;大型语言模型&#xff08;LLMs&#xff09;已经成为技术前沿的热点话题。Ollama&#xff0c;作为一个开创性的工具&#xff0c;使得开发者能够…

ngnix 入门 二,docker启动nginx, 安装ssl 证书,使用配置文件,映射后端服务 ,提供给前端项目访问

搭建生产环境真不是人做的事&#xff0c;特别是对于一知半解的人。仅以此文献给各位技术人 说一下背景&#xff1a;项目前后端分离&#xff0c;前端 vue3 、小程序端 &#xff0c;后端 go 提供服务。 微信小程序需要使用 https 请求。 这就必须让我们想到nginx 了 想要达到的…

MySQL学习之DQL语句(数据查询语言)

准备SQL CREATE TABLE student ( id int, -- 编号 name varchar(20), -- 姓名 age int, -- 年龄 sex varchar(5), -- 性别 address varchar(100), -- 地址 math int, -- 数学 english int -- 英语 );INSERT INTO student(id,NAME,age,sex,address,math,english) VALUES (1,…