1. 问题描述
使用 docker hub 官方 ubuntu 镜像,版本 22.04 LTS
# 查看 ubuntu 版本
cat /etc/lsb-release
进入清华软件镜像站,选择ubuntu
。选择正确版本,对照上面查询结果的DISTRIB_DESCRIPTION
,我的是22.04 LTS
按照清华源教程直接更换源,提示报错,无法完成更新,显示如图错误:
2. 原因分析
- docker hub 官方的 ubuntu 镜像极度精简,很多必要的软件包没有安装
3. 解决方法
- 分析更新失败原因,找到更新源之前需要安装的软件包
可看出更新失败是缺少
ca-certificates
这个软件包 - 换回原版apt源,先安装必要的apt软件包
经验教训: 更改所有的配置前都要做好备份,记录相关操作,不然哪次更改之后改挂了,那就真的挂了- 进入 docker 容器中的交互式命令台,以便对容器中的 ubuntu 系统进行操作
(个人感觉讲的比较好的docker教程)
容器名my_ubuntu_02
,使用bash
作为命令台的 shell,容器名根据自己创建的容器修改docker exec -it my_ubuntu_02 /bin/bash
- 恢复之前的备份文件
# docker 容器中的命令行默认使用 root 权限,以下指令均在容器中的 root 用户下执行 # ubuntu 的 apt源配置文件:/etc/apt/sources.list # 备份操作:使用 cp 命令,复制原文件、保存到原来的目录下,并改名(添加 .bak 的后缀) cp /etc/apt/sources.list /etc/apt/sources.list.bak # 还原操作:使用 cp 命令,复制备份文件,并改回原配置文件的名称(去掉 .bak 后缀) # 还原操作相当于备份操作反过来 cp /etc/apt/sources.list.bak /etc/apt/sources.list
- 使用原来的软件源安装
ca-certificates
这个软件包# 1. 清理 apt 软件源管理工具中原地址的缓存 apt clean # 2. 更新 apt 的缓存 apt-get update -y # 3. 安装 ca-certificates apt-get install -y ca-certificates # 4. (可选) 安装任意一款 文本编辑器,以方便接下来修改配置文件 # Linux 常用文本编辑器:wim、nano、emacs apt-get install <上述任意一个文本编辑器名> # 如安装 nano apt-get install nano # 不安装也行,但要用 Linux 系统自带指令来修改文件 # 个人建议:不建议安装,因为原来系统过于精简,不论安装哪个都需要附加大量的必要运行环境 # 需要 100M + 的空间,让 docker 容器变得过于臃肿
- 进入 docker 容器中的交互式命令台,以便对容器中的 ubuntu 系统进行操作
- 再按照清华源的操作,更新软件源
注意事项: docker hub 官方镜像中,像样的文本编辑器:vi、wim、nano 一个都没有,所以只能用系统指令来修改配置文件中的内容 或 在换回原来的源时安装上述任意一个文本编辑器(即上述第四点,可选部分)-
备份当前配置文件
# 使用 cp 命令:复制原文件、保存到原来的目录下,并改名(添加 .bak 的后缀) cp /etc/apt/sources.list /etc/apt/sources.list.bak
-
清空配置文件
# 使用 echo 指令,配合输出重定向 > # 将空字符 "" 覆盖到配置文件 /etc/apt/sources.list echo "" > /etc/apt/sources.list
-
将清华源中的地址添加进入配置文件
# 使用 echo 指令,配合输出重定向 > # 将上述红框部分的内容(不带 # 的语句--不是备注),追加到配置文件 /etc/apt/sources.list 中 # 逐条执行以下语句 echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse" >> /etc/apt/sources.list echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse" >> /etc/apt/sources.list echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse" >> /etc/apt/sources.list echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse" >> /etc/apt/sources.list
-
使用apt指令,更新软件源
# 1. 清理 apt 软件源管理工具中原地址的缓存 apt clean # 2. 更新 apt 的缓存 apt-get update
-
(可选)测试换源是否成功
下载安装软件包curl
,并查看 curl 是否可顺利运行
curl
是 Linux 平台广泛使用的传输工具,可利用 http 协议实现文件上传/下载# 1. 安装 curl apt-get install curl # 2. 查看 curl版本信息 curl -V
curl
版本输出结果:
-