2017-05-08

Windows 10 如何啟用 docker 功能

Windows 10 雖然不是原生支援 Windows Server container(透過 Hyper-V 支援),執行速度較慢,但 Microsoft 在 Windows 10 上將 windows container 與 Linux container 包裝得非常方便。只要滑鼠動幾下就可以在不需人為介入下使用 Hyper-V 建立 Windows Server container 及 Linux container ,使用者體驗很好,反而在 Windows Server 2016 上還需要手動使用 Hyper-V 安裝 Linux 後才能建立 Linux container (2017/5 當下現況,Microsoft 已經對外公布會解決這個問題,只是沒說什麼時候而已XD),複雜度遠遠超過 Windows 10,加上本來對 Linux 就不熟悉,要完全搞定這些環境是個非常大的挑戰,在兩方優劣比較下,決定暫時犧牲效能先求可以正常使用就好,畢竟重點是 container 而不是 os,立馬來看看該如何讓 Windows 10 可以使用 docker 吧


必要條件

  1. Windows 10 Anniversary Edition(年度版) 或是 Creators Update (Professional or Enterprise).

    如果沒有的話可以至微軟官方 下載 Windows 10 光碟映像 (ISO 檔案)

  2. 確認 Windows 10 的 OS 組建版本需要 14393.222 以上

    開啟 commnad prompt 或 Windows PowerShell 執行 winver.exe

    1build

啟用容器功能

  1. 啟用 Hyper-V
    • 使用管理者權限開啟 Windows PowerShell
    • 執行 Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

      2installhyperv

    • 提示重新啟動電腦(可以等 container 功能啟用後再重新啟動即可)

      3restart

  2. 啟用 container
    • 使用管理者權限開啟 Windows PowerShell
    • 執行 Enable-WindowsOptionalFeature -Online -FeatureName containers -All

      4installcontainer

    • 重新啟動電腦

      5restart

      • 或是執行 Restart-Computer -Force

安裝 Docker for Windows

  1. 下載 Docker for Windows

  2. 執行 InstallDocker.msi 安裝 Docker for Windows

    6installdocker

    • 安裝完成後請重新開機
  3. 確認安裝狀態

    開啟 commnad prompt 或是 Windows PowerShell ,執行 docker info

    7dockerinfo

建立 container

  • 系統圖示列可在 Windows conatiner 與 Linux container 間自行切換

    切換需要一點時間,畢竟背景會默默啟動 Hyper-V

    • to Linux container

      8towindowscontainer

    • to windows container

      9toLinuxcontainer

  • 可以透過 commnad prompt 或是 Windows PoerShell 來切換

    • commnad prompt

      "C:\Program Files\Docker\Docker\DockerCli.exe" -SwitchDaemon

    • Windows PoerShell

      & 'C:\Program Files\Docker\Docker\DockerCli.exe' -SwitchDaemon

  • 如果使用錯誤 os 的 image 會有提示

    • Linux use windows image

      13Linuxusewindows

    • windows use Linux image

      11windowsuseLinux

  1. Linux container

    docker run -it --name centos centos

    10Linuxok

  2. Windows Server container

    docker run -it microsoft/nanoserver cmd

    12windowerok

心得

Windows 因為系統本身大小的問題,在取得 base image 或是建立 container 時執行速度都比 Linux 慢上不少,除此之外整體使用體驗與 Linux 環境幾乎相同,不由得佩服 Microsoft 的決心,Windows container 非常值得期待,想必會在 .Net 開發界有不小的衝擊

參考資訊

  1. Windows Containers on Windows 10
  2. Windows 10 上的 Windows 容器
  3. 如何在 Windows 10 同時安裝與執行 Windows 與 Linux 容器 (Docker)

6 則留言:

  1. 後來發現其實不先打開 HyperV 也可以,安裝完 Docker ,第一次啟動時它會問你要不要打開

    回覆刪除
    回覆
    1. 讚啦 感謝 Cash 大大指教 ^_^

      刪除
    2. 我第一次啟動的時候沒有特別問我要不要打開

      不過有顯示需要打開HyperV

      刪除
  2. 想請問一下,如果我是在一個 HyperV 的客體虛擬機器上的 Windows 10 專業版,可以直接安裝 Docker for Windows 嗎?
    還是說,只能安裝在有啟用 HyperV Host 主體上的 Windows 10 呢?
    因為印象中,HyperV 好像在同一台 PC 實體主機上,好像只能啟用一個 HyperV 服務,所以才有這樣的疑問。
    (而我大部分的 .NET 開發環境都是建置在 HyperV Guest 客體上) 非常感謝!

    回覆刪除
    回覆
    1. 如果 Hyper-V 版本夠新 (8 or later),並且啟用巢狀虛擬化就沒問題,Windows 10 與 Windows Server 2106 都支援

      刪除
    2. 感謝,我成功地在我 Windows 10 HyperV 客體啟用的巢狀虛擬化之後,開啟 HyperV 和容器功能,安裝好 Docker for Windows 之後,然後 Docker 就可以 run 起來了。
      非常感謝啊!!!

      刪除