docker 舊版本升級

參考文章:https://blog.csdn.net/weixin_46152207/article/details/127533584

本文記錄在CentOS上使用yum工具升級docker 的過程。參考文章寫得很好,一次性成功。

我為什么升級

老版本是是1.13.X不支持多階段構(gòu)建,多階段構(gòu)建需要1.17.5以上版本

舊版本備份

首先對原來的配置文件進(jìn)行備份,docker升級可能覆蓋原配置文件。鏡像和容器不會覆蓋,升級后依然可用。

  1. 默認(rèn)配置文件
    默認(rèn)路徑:/etc/docker/*
    我只備份daemon.json,升級后確實(shí)被覆蓋,我從備份恢復(fù)了daemon.json

  2. 存儲地址
    默認(rèn)路徑:/var/lib/docker
    升級不會覆蓋該路徑,升級后可以繼續(xù)使用

我遇到的問題

  1. containerd.io 安裝失敗
    參考上面文章基本可用,但是 containerd.io 下載失敗,在國內(nèi)鏡像中無法下載
containerd.io-1.6.33-3.1.el7.x86_64.rpm: [errno -1] 軟件包與預(yù)期下載的不符

通過直接下載,手動安裝解決

# 下載,如果有網(wǎng)絡(luò)問題,可以從其他地方下載上傳
wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.6.33-3.1.el7.x86_64.rpm
# 安裝
rpm -ivh --replacepkgs containerd.io-1.6.33-3.1.el7.x86_64.rpm
  1. 低版本升級到高版本之后不兼容 修改參數(shù)進(jìn)行解決,修改后需要重啟
 Error response from daemon: Unknown runtime specified docker-runc

解決方法:
更改/var/lib/docker/containers目錄中的文件參數(shù),把docker-runc替換為runc

grep -rl 'docker-runc' /var/lib/docker/containers/ | xargs sed -i 's/docker-runc/runc/g'
注:grep -rl:遞歸搜索目錄和子目錄,只列出含有匹配的文本行的文件名,而不顯示具體的匹配內(nèi)容
xargs:銜接執(zhí)行之前得到的值

總體意思是把/var/lib/docker/containers中含有‘docker-runc’的文件搜索出來,并把‘docker-runc’字符為runc

總結(jié)流程

  1. 備份配置文件
  2. 卸載
  3. 查找可用的新版本
  4. 安裝,并解決無法自動安裝的組件問題
  5. 恢復(fù)配置文件,然后啟動
  6. 解決兼容性問題
  7. 重啟docker
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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