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 (20175 當下現況,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)