1. 程式人生 > >首創詮釋docker的Formulas: Windows 7 + Tiny Linux 4.19 + XFS + Vmware Workstation = super machine (docker從零開始時記,Follow me and you go)

首創詮釋docker的Formulas: Windows 7 + Tiny Linux 4.19 + XFS + Vmware Workstation = super machine (docker從零開始時記,Follow me and you go)

 不少人從來沒有接觸過docker,或者僅僅是聽說過,本文試圖從原點開始深入瞭解docker的全貌,剖析docker的基礎概念,讓我們一起開始docker之旅~~~


開場:什麼是docker

docker是一個容器平臺。

這是我最直接的定義,打字間我即興查了一下wiki,引證了以上單句

Docker is a set of platform as a service (PaaS) products that use OS-level virtualization to deliver software in packages called containers. Containers are isolated from one another and bundle their own software, libraries and configuration files; they can communicate with each other through well-defined channels. All containers are run by a single operating-system kernel and are thus more lightweight than virtual machines.

 目標:為什麼用docker

docker可以提供即開即用的特定OS環境,並且簡化對相關OS的依賴或者部署週期

這是我的看法,網際網路工作者幾乎99.9%都是以App或者Service作為導向,而實際使用中docker不僅僅是為了快速部署,容災熱備,換句話說docker不僅僅是和應用相關

docker適合一切以環境導向的聯合部署作業(TASK-oriented)

例子:一個簡單的網路型app和這個app依賴的複雜網路設定

例子:一個簡單的使用者態服務和一個複雜的定製化LINUX OS,如OPENWRT

例子:一個簡單的原始碼資料夾和一個複雜的跨架構工具鏈

概念:docker的邏輯結構

docker是vm的包裝,docker-machine是docker開始的地方,這裡存在並且一直被忽視一個非常關鍵的適配橋接:driver

machine的特性start/stop和driver的模型決定了另一端一定存在一種虛擬化支援,也就是說docker不是虛擬化的全部而只是一個名詞的概要,docker離不開虛擬化

理由非常簡單而且明確:docker-machine和dock-cli到組成的engine,編譯88%以上的原始碼語言go.

體驗:從WINDOWS 10到WINDOWS 7不同的docker產品,一樣的基礎構成

-跟隨docker for windows一路走來,docker以非常勻速的方式在不停演化,一切都在意料之中

Docker Desktop for Windows是伴隨著Hyper-V(win 7無緣的本質)的聯合體,這裡誕生出一個moby,作為整個產品的特異化核心

Docker Desktop for Mac是伴隨著linuxkit+qemu的聯合體,這裡又又誕生出一個moby,作為整個產品的特異化核心

Docker Toolbox是伴隨著Docker Desktop發展的棄嬰(巨大的甲骨嬰),本文,我們(我和我的看官們)將拋棄一個時代失敗品Oracle VM VirtualBox,抽絲剝繭boot2docker,迎來本篇的內涵Vmware

深化:在Window 7上非常規的使用Vmware Workstation和docker

如果你僅僅猜到了開始,看到我blah-blah-blah碼了幾百字就應該會猜到,hehe以下都是精華濃縮版,因為困了,要睡覺了

長話短說,短話精縮,Win 7上使用workstation太通常了,稍微有一些虛擬化經驗的都知道微軟有Virtual PC.而它的對面就是Vmware.

顯然Virtual PC挑不動docker這根大梁所以Hyper-V才能獨樹一幟(沒有細分的產品)

準備好docker vmware driver就開始吧,我用的是大家不太常見的driver,沒有任何start說明

我的docker和vmware都沒有安裝在預設路徑,這時必須要動動腦筋,soft/hard link可以解決問題

我的超高T級HGST氦氣盤沒有在預設路徑,所以我們準備把VM放在這個倉儲上必須提供storepath的環境變數,我在go檔案中確認過cli上下文,或者系統級別都提供支援

我的docker動輒幾百G,從export容器的從容不迫到更新image:latest,tar到檔案,4.14kernel必然的某些特定錯誤,不難看出4.19的適用面更廣也支援度也高於通俗的4.14kernel

XFS提供了很好的並行IO效能

關鍵語句是修改start.sh執行${DOCKER_MACHINE}" create -d vmware --vmware-boot2docker-url="file://\????????.iso",此處應有掌聲,因為經歷了幾次失敗後我發現失敗的路徑是docker的安裝盤,所以可以逃避失敗刪除boot2docker-url在覆蓋cache後等一段時間,或者如上所示乾脆把碟符省去,後面的路徑都是有效的,不知道是不是start.bat沒有問題

當然可以看一下建立時的除錯輸出,一般不看也是一件很省心的事情,應該一切順利

env可以輸出環境變數,cmd/ps可以看到SET版本,bash看到export版本

然後在睏意中,我貼出本文最佳,之2幅圖片在結尾,一如既往,所有的內涵都在圖片裡,所有的內涵都在圖片裡,所有的內涵都在圖片裡

提前 To be continued.

(睡了還爬起來補充,忘了的內容,非常重要,不嵌在上面了,最近Docker Desktop for Windows提供了WSL的支援,請遵循我的最佳實踐不用的時候關閉,關閉後臺)

 


 

 


&n