90%的人都不知道:Docker 容器 apt 報錯 404 的幕后黑手竟是它!

大家有沒有遇到過這樣的情況:你準(zhǔn)備在本地跑某個開源項目,你找到了這個開源項目的鏡像名稱,也將這個鏡像 docker pull 下來了,但是在運行的過程中,你發(fā)現(xiàn)容器中需要安裝某些軟件才能夠繼續(xù)……

本來以為可以通過簡單的安裝命令即可安裝好軟件,然而卻報下面類似的錯誤:


起初,我還以為是系統(tǒng)鏡像源的問題,但是當(dāng)我更換了鏡像源了之后,發(fā)現(xiàn)依舊還是這個錯誤,??

問題原因

最后問了一下 AI 才知道這是因為:

  1. 系統(tǒng)是 Debian 10 (Buster)
  2. Debian Buster 已經(jīng)停止官方支持 (End-of-Life, EOL)。

Debian 官方已將 Buster 版本的軟件包從主服務(wù)器 (deb.debian.org) 移除,轉(zhuǎn)移到了 存檔服務(wù)器 (archive.debian.org)。所以,現(xiàn)在使用 apt 就會找不到文件。

解決方案

1. 先備份原配置,免得改亂了,無法恢復(fù)

cp /etc/apt/sources.list /etc/apt/sources.list.bak

2. 批量替換為存檔源:

直接使用 sed 命令進(jìn)行批量替換,將所有源地址換成存檔服務(wù)器地址。

# 將主源和安全源地址都替換為存檔服務(wù)器地址
sed -i 's/deb.debian.org/archive.debian.org/g' /etc/apt/sources.list
sed -i 's/security.debian.org/archive.debian.org/g' /etc/apt/sources.list

3. 清理廢棄的更新源:

存檔服務(wù)器通常沒有 -updates/updates 這些子目錄,我們把這些引用清理掉,避免再次報錯。

# 移除所有 *-updates 相關(guān)的行
sed -i '/buster-updates/d' /etc/apt/sources.list
sed -i '/buster\/updates/d' /etc/apt/sources.list

4. 重新嘗試安裝 Git:

配置修改完成后,再次更新并安裝 Git。這次,apt 就會向正確的存檔服務(wù)器請求文件了!

# 重新更新索引,確認(rèn)不再報錯 404
apt update

# 成功安裝 Git!
apt install -y git

# 驗證安裝是否成功
git --version

這樣問題就解決了~

不知道容器所用的系統(tǒng)

不確定容器使用的什么系統(tǒng),就不方便使用安裝命令,當(dāng)然了,你也完全可以敲敲 apt 、yum …… 看這些安裝軟件的工具存不存在,如果存在則直接使用這些命令進(jìn)行安裝,但是我還是建議你先查看清楚使用的是什么系統(tǒng)為好。

# 嘗試查看發(fā)行版信息,這是最準(zhǔn)確的方法
cat /etc/os-release

通過查看 ID 字段,就可以看出來是什么系統(tǒng)。

希望以后你遇到類似的問題的時候,也可以避避坑吧~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容