
出品丨Docker公司(ID:docker-cn)
編譯丨小東
每周一、三、五,與您不見不散!
Windows Server 2019 是 Windows Server 下一款長期提供支援的産品,并且現在它已經可以供大家使用了!Windows Server 2019 為運作 Docker Windows 容器提供了一些非常有用的改進。現在,您可以直接用 Windows Server 來運作“純”Docker 容器,其中所有的容器程序都可以直接在主機作業系統上運作。您可以在 Windows 10 上使用相同的 Docker 鏡像、Dockerfiles 和 docker 指令。
注:在 Windows 10 上,Docker Desktop 是最簡單的入門方式。
如果您想檢視最新版本的 Windows Server 并運作 Docker 容器,那麼您需要做以下工作。
擷取 Windows Server 2019
您可以立即下載下傳 ISO 來安裝 Windows Server 2019,如果您有 Visual Studio 訂閱,也可以安裝Windows Server 2019,如果沒有,則可以下載下傳為期 180 天的評估版(浏覽
https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-2019擷取下載下傳位址)。已經部署了 Windows Server 2019 的虛拟機将很快在 Azure 上提供。
2019 的安裝過程與以前的 Windows Server 版本相同,從 ISO 啟動 VM 并開始安裝。我更喜歡沒有 GUI 核心的安裝方式:
我将 Server 2019 安裝到運作在 Windows 10 計算機上的 Hyper-V VM 上,VM磁盤存儲在外部 SSD 上。隻需幾分鐘就可以完成設定,并且運作速度非常快(即使隻配置設定了 4GB 的記憶體)。
注:您還可以使用 ISO 将以前的 Windows Server 版本更新到 2019。
連接配接到伺服器
當您用 RDP 進入到Windows Server Core機器時,您隻看到一個指令提示符。 第一次連接配接時,您需要設定預設 Administrator account 的密碼。 然後我喜歡将 PowerShell 設定為預設指令 shell,是以每當您使用 RDP 就會進入到 PowerShell 會話:
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon' -name Shell -Value 'PowerShell.exe -noExit'
配置 Windows 功能
要運作容器,您還需要啟用容器功能,對于非生産 VM,我還禁用了 Windows Defender 功能來停止它消耗 CPU 周期。 您需要執行以下步驟後重新啟動:
Install-WindowsFeature -Name Containers
Uninstall-WindowsFeature Windows-Defender
Restart-Computer -Force
配置 Windows 更新
首先需要確定版本是最新的,之後我會禁用自動更新功能,隻有在我需要時才會進行的更新。Windows Server Core 中沒有 GUI,是以請運作 sconfig 然後選擇:
- 選項5,将 Windows 更新設定為手動;
- 選項7,啟用對伺服器的遠端桌面通路;
- 選項6,下載下傳并安裝所有更新;
然後就可以安裝Docker了。
在 Window Server 2019 上安裝 Docker
Windows Server 許可包含了 Docker Enterprise 的許可成本,是以您可以運作 Docker Enterprise 版本,并為 Microsoft 和 Docker 的容器提供生産支援。
最新的 Docker Enterprise 引擎版本為 18.03,您可以使用 PowerShel l 來進行安裝:
Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
Install-Package -Name docker -ProviderName DockerMsftProvider -Force -RequiredVersion 18.03
這會将 Docker 設定為一個 Windows 服務,您需要啟動它:
Start-Service docker
下載下傳 Windows 基礎鏡像
您在 Windows Server 2019 上運作的任何 Docker 容器都将基于 Windows Server Core 或 Nano Server。 您将需要這兩個鏡像,并注意基本鏡像現在托管在 Microsoft 的容器鏡像倉庫(MCR)上:
docker image pull mcr.microsoft.com/windows/servercore:1809
docker image pull mcr.microsoft.com/windows/nanoserver:1809
注:與 Windows Server 2016 版本相比,這些鏡像變得很小。 Windows Server Core 從 10GB 以上縮減到 1.5GB,Nano Server 從 1GB 縮小到 90MB!
下載下傳 .NET 核心鏡像
Windows Server 2019 一經推出,.NET Core團隊就釋出了 SDK 和運作時鏡像。您可以立即啟用它們并在 2019 中開始運作 .NET Core 應用程式。
docker image pull microsoft/dotnet:2.1-sdk-nanoserver-1809
docker image pull microsoft/dotnet:2.1-aspnetcore-runtime-nanoserver-1809
上遊 Docker 鏡像仍在 Docker Hub 上,隻有基礎的 Windows 2019 鏡像在 MCR 上
試試看!
我推出了我的 .NET Core“whoami”鏡像的更新版本,是以您也可以嘗試在 Windows Server Core 2019 容器中運作 ASP.NET Core 2.1:
docker container run -d -p 8080:80 sixeyed/whoami-dotnet:nanoserver-1809
Windows Server 2019 中 Docker 的一個增強功能是 loopback 位址現在可以使用了,是以您可以使用伺服器上的 localhost 通路此容器,并使用外部計算機上相同的已釋出端口:
在 Swarm 模式中......
Windows Server 2019 現在支援 Docker swarm 模式的入口網絡。 這意味着您可以在一台伺服器上運作多個容器,所有容器都在同一端口上偵聽,Docker 将在容器之間對傳入請求進行負載均衡。
将伺服器切換到單節點叢集:
docker swarm init --advertise-addr 127.0.0.1
現在将“whoami”應用程式部署為叢集服務,具有多個副本和一個已釋出的端口:
docker service create `
--publish 8070:80 `
--replicas 5 `
sixeyed/whoami-dotnet:nanoserver-1809
現在,當您從外部浏覽到 VM 時,Docker将在托管該服務的五個容器之間對請求進行負載均衡:
不止于此
Windows Server 2016 仍然非常适合生産,但是 Windows Server 2019 使 Windows 容器更接近于 Linux 容器的特性,并且解決了 2016 中的一些棘手問題。