參考資料:
https://bbs.huaweicloud.com/blogs/176232
https://www.cnblogs.com/yankliu-vip/p/Docker-on-Windows-Server-2019.html
一、聯網安裝
官方提供的方法
(1)步驟一:
Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
#這一步驟是安裝DockerMsftProvider模塊,如沒有NuGet程序,則會提示你安裝,NuGet是包管理程序,這個必須要你安裝,無法跳過
(2)步驟二:
Install-Package -Name docker -ProviderName DockerMsftProvider
#利用上述安裝的模塊來安裝docker包,這一步會下載一個docker的zip包
總結一下:按照官網這種方式來安裝,首先你要安裝NuGet程序,然后安裝DokcerMsftProvider,最后利用DokcerMsftProvider來安裝docker,這一步還是會下載docker的zip包,最最主要的就是這最后一步,前面下載程序沒什么好說的,這最后一步到底干了什么?其實主要做了如下5件事情:
(1)下載docker的zip包(里面是一堆的exe程序,包含了服務端dockerd和客戶端docker等一系列的docker程序)
(2)解壓docker zip包到 C:\Program Files\Docker 目錄,創建 C:\ProgramData\Docker\config 目錄
(3)添加環境path
C:\Program Files\Docker #將這個路徑添加到系統環境變量,其實就是為了能夠在 PowerShell中全局執行docker命令
(4)利用winserver的服務器管理器安裝Containers(容器)功能,此功能不安裝,無法啟動docker服務端
(5)啟動docker服務端,並將其注冊為服務,這一步需要確保 C:\ProgramData\Docker\config 下具有 daemon.json 文件
OK !到這里我們清楚了,它在這個安裝過程中具體干了些什么事情,那么我們還有必要安裝NuGet和DokcerMsftProvider這個2玩意兒?沒必要,我們完全可以自己下載docker的zip包,手動實現這些過程!當然,你要是一些列命令敲下來啪啪啪就全部安裝好了,那么你也沒必要看這個文章了,作者照着敲了一堆命令,不是這個程序包下不到,就是那個程序包下不到,也是頭疼的很。
二、離線安裝
環境要求:winserver 2019 標准版 或 winserver 2016 標准版一台
資源要求:docker離線包,本文基於docker-19-03-5.zip進行安裝
docker zip包下載地址: https://dockermsft.blob.core.windows.net/dockercontainer/docker-19-03-13.zip
步驟一:
解壓 docker-19-03.zip到 C:\Program Files\Docker 下,其中Docker目錄需要手動創建
步驟二:
創建 C:\ProgramData\Docker\config 目錄,在config目錄下創建 daemon.json 文件,其內容可為 { "insecure-registries":["192.168.1.135:5000"] } 作者在此處加了一個本地的鏡像倉庫,請根據實際情況修改,為空也可以。
步驟三:
添加系統環境path環境變量:我的電腦 > 屬性 > 高級系統設置 > 環境變量 > 新建
步驟四:將dockerd注冊為服務
以管理員身份進入CMD執行如下指令:
cd C:\Program Files\Docker # 進入dockerd.exe所在目錄路徑
dockerd --register-service # 將dockerd 注冊為服務
步驟五:安裝Containers功能,安裝需要重啟
步驟六:開始玩docker
三、在window docker中運行linux容器
Windows上的Docker只運行Windows容器,要在Windows Server上使用Linux容器,需要使用Docker Enterprise Edition Preview,其中包含用於運行Docker Linux容器的完整LinuxKit系統。
啟用LinuxKit系統以運行Linux容器
步驟一:
# Set LCOW_SUPPORTED Variable to 1 for enabled
# powershell執行以下命令
[Environment]::SetEnvironmentVariable("LCOW_SUPPORTED", "1", "Machine")
步驟二:
# Enable Experimental Features in Dockerd daemon.conf
# powershell執行以下命令
$configfile = @"
{
"experimental": true
}
"@
$configfile|Out-File -FilePath C:\ProgramData\docker\config\daemon.json -Encoding ascii -Force
步驟三:
在Docker使用 Linux Container時,仍然需要使用Linux kernal。
You should use the latest LCOW release here
Invoke-WebRequest -Uri "https://github.com/linuxkit/lcow/releases/download/v4.14.35-v0.3.9/release.zip" -UseBasicParsing -OutFile release.zip # 下載 Expand-Archive release.zip -DestinationPath "$Env:ProgramFiles\Linux Containers\." # 解壓
舉例:
Redis on Docker Linux Container#
現在我們即可使用 Windows Container或者Linux Container,但是由於目前基於Windows Container只能運行Windows應用程序,所以我們需要使用--platform
選擇一種容器類型,參考如下
docker run --platform=linux --name redis-server -d -p 6379:6379 --restart=always redis
References
- Posted on February 12, 2019 by Ben Thomas,Getting started with Linux Containers on Windows Server 2019
- November 16, 2018 by Andy Syrewicze (Chief Editor)
,How to Run 🐧 Linux Containers on Windows Server 2019 - posted @ 2017-02-10 11:40 北京的201個藍天,Windows Container 和 Docker:你需要知道的5件事