舊瓶也能裝新酒 Ubuntu 14.04硬裝 ドック實戰


在 2020年的年頭,因為某些因素,必須評估把陳年的 Ubuntu 14.04撿起來裝 ドック的方案,在 2020年年幹這事,當然不是 apt install docker.io這麼簡單,否則這篇文章就不會出現了.

どの医者?
在 ウバンチュウ原始的套件庫內就有 ドッカー也就是前面提到的 ドッカー.入出力不論是 Ubuntu 14.04或現在的 18.04甚至是未來的 20.04都一律不建議使用這個套件來安裝 ドッカー因為這些 ウバンチュウ自帶的 ドッカー.io 並非由 ドッカー官方維護,因此更新永遠慢一步甚至很多步.更新慢會有什麼樣的問題?答案是不安全,讓我們看看 Docker 的漏洞清單可以想像一下如果裝了幾乎不更新的 ドッカー.io 我們的系統會暴露在多大的安全風險中.
因此,在 OS必須是 Ubuntu 14.04的先決條件下,我們還是要盡可能的降低系統的安全風險,所以必須使用 ドック官方的最新套件來安裝 ドッカー.
就像寒戰電影中保安局局長陸先生所言:

非常時期 用非常的方法(可是還是不能打民眾)版權:華映娛樂股份有限公司

安裝 ドック
先裝一些基礎套件:
> sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
下載並把 ドッカーGPG金鑰加入系統:
> curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
正式的把 ドック官方套件庫加入系統:
> sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
安裝 Docker
> sudo apt install docker-ce
按照上面的步驟把 ドック裝完後,如果嘗試操作 イメージ甚至建立容器,乍看之下會覺得都是正常的,但是一旦想要進入容器內就會噴錯:
> sudo docker start --interactive 62ba

docker: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "process_linux.go:301: running exec setns process for init caused \"exit status 23\"": unknown

得到上面這堆不知所云的錯誤訊息.
必須更新 Linux核心才能夠正常使用.

安裝新版 Linux核心
在動手硬幹前先了解一下為何必須這麼做.
為了解決 CVE-2019-5736這個漏洞,ドック對 Linux核心的版本需求為 3.17 .以上版本,不幸的 Ubuntu 14.04的 Linux核心最高只有到 3.13幸虧透過 ウバンチュウ的 LTS Enablement Stacks機制,能夠讓我們在 Ubuntu 14.04上有辦法安裝 16.06的 リナックス4.4核心.
安裝新版 Linux核心:
$ sudo apt-get install --install-recommends linux-generic-lts-xenial
裝完之後要重開機一下,重開機後,系統應該就會是 4.4 .版的核心了.
再次嘗試進入容器內,應該就會是成功的了.

後話
儘管技術上可行也測試 OK.不過這樣的解法最後並沒有應用到正式運作的機台上,開玩笑怎麼可能拿正式版的機台來換核心,當然要先研究不傷身體再講求療效啊!

第一先研究不傷身體版權:五洲製藥