0%

【Docker】Docker for Windows 和 Docker on Windows Server 一樣嗎?

/images/20190221/0.png

一開始以為 Docker For Windows 跟 Windows Containers on Windows Server 是一樣的東西,結果在建置 CI 機器時碰到一些問題才發現原來是不同東西啊


Docker for Windows

Docker for Windows 底層是透過 Hyper-V 來乘載 Docker Engine,也因為需要多一層 Hyper-V ,所以執行效率比之後出的 Docker on Windows Server 直接原生 Docker Engine 效率來說差了一截,但也因為有 Hyper-V 的協助下,可切換成能執行 Linux Container 的模式。

/images/20190221/1.png

Windows 10 Professional 版本就可以安裝 ( 因為Professional 版本才有 Hyper-V )

/images/20190221/2.png

圖片來源 : Microsoft


Windows Containers on Windows Server

Windows Server 2016 或更新的版本才可使用,直接在 OS 上執行 Docker Engine,所以效能比需要 Hyper-V 的 Docker for Windows 好上一大截,如果要跑 Linux 類的 Container 也可以透過 --isolation=hyperv 的方式,不過有個限制是這個方法不能在 VM 中用,也就是說如果你今天是用雲端的 Windows Server,本身已經是在 VM 裡面了,就無法在裡面執行 isolation

/images/20190221/3.png

圖片來源 : MSDN

目前因為公司內部很多既有專案都是用 .Net Framework 開發的,所以轉移到 Container 也是選擇用 Windows Containers on Windows Server,畢竟如果是 Production Service,效能還是非常重要的一個考量