上週去聽保哥介紹操作Windows Container看起來超級炫的~~~
有一種以後只要透過container就能讓我們整個服務部屬能變得輕鬆容易~~~
虛擬化技術
container就是指現在常聽到的容器化技術,我先前一直以為docker就是container,或是要使用container就只能docker,聽完下來看來是我有點誤會了。
我們以前使用的VMware player 、VirtualBox或Hyper-V那種從安裝作業系統開始的虛擬化技術,是藉由VM提供硬體虛擬化隔離環境來讓我們安裝自訂CPU、硬碟、記憶體等等的虛擬電腦。
而container這種容器虛擬化技術,就是省略了硬體虛擬化,直接由現有作業系統來提供虛擬環境,執行特定應用程式,這種容器化技術很久以前就有廠商在研發。
不過最關鍵點應該是2013/2014年左右Linux作業系統核心提供了這種(官方級)虛擬化支援,讓container這種容器化技術備受矚目,又剛好docker公司首先推出對應服務,便讓docker成為container的代名詞。當然某角度來說是該公司把Docker開源專案提供給Linux 基金會,才有後續容器化技術風行的發生。
後來很多公司都推出自己的容器化技術,不過docker變成最廣泛的容器虛擬化格式,也不用依賴docker公司提供的docker工具才能使用,像是google的Kubernetes簡稱k8s也能管理並使用docker格式image來建置container。
Container
container這種容器化技術,讓我們少掉了安裝作業系統的時間與空間,省掉傳統虛擬化要提供專用CPU、硬碟、記憶體等等繁雜步驟。我們只要把我們執行的程式包裝成docker image靜態檔格式,執行(run)起來便成為一個獨立隔離執行環境的container了。也能讓系統中原本不能重複存在的程式,透過容器虛擬化來包裝後,執行多個容器而存在多個,彼此之間又因為被容器隔離而不會導致的互相干擾。
整個container的執行並不會影響到靜態image,刪除掉container便會把裡面的程式或變更一同刪掉,透過image檔再run起來便是一個新的container,有點像是遊戲的儲存點或記錄檔,透過image檔便能無限次重新開始。
Windows Container
而Linux上面有了這種容器虛擬化技術後,微軟便與Docker公司合作推出windows上的容器化技術,而這一個成果就是我們可以安裝在Windows 10上的Docker Desktop。註1
Docker Desktop只能安裝在Windows 10 PRO或同級版本上,因為需用到Windows進階功能的Hyper-V和Container,所以家用版無法不能安裝。沒有啟用這兩個功能的話docker會提醒我們並幫我們啟用。
Docker Desktop可以運行Linux container或是Windwos container,並且兩種可以同時運行。
特別的是Linux container是運行在Linux的Hyper-V的虛擬機裡面。
不過在指令管理時有個管理狀態,在Windows狀態下或Linux狀態下只能管理各自的容器,需透過選單中做切換。
例如現在我在Windows container模式中下指令就只能看到基於Windows系統的docker image。
另外Windows的image檔跟有跟Win 10的核心版本有相依,像是我的Win 10還是1809版(2018年9月),就無法下載跟使用最新的1903版的container。
感覺Windows上的容器化技術感覺離Linux container說的輕量感覺有很大的差異,不確定微軟怎麼實作的,聽保哥說Windows container執行環境有Process與Hyper-V兩種隔離模式。
像是我下載了微軟提供的iis image,雖然可以用來幫我們基於.NET Framework建立的Asp.net網站,改成透過容器來部署。但這個iis image是包在windows server縮小化版的server core image裡,靜態檔案大小就要5GB左右……
不過執行起來還是蠻快的,使用上看起來就是獨立的沒有圖形化介面的迷你windows系統。
註1:Windows Server只能安裝Docker Enterprise 版,官方說明寫免費安裝,但沒說明能否免費商業使用XDD