由於台灣公司缺乏專職的網絡管理人員,開發環境資源並不是這麼充足,同時也不希望負責維護一個Jenkins系統,且為了避免上傳和下載所需的時間,我也不想搭建一個Docker倉庫。因此,我現在花了些時間研究如何在 Windows Docker Desktop 遠端建置及管理。
首先,我們在兩台電腦上都安裝了Docker Desktop,開發人員在他們自己的Windows電腦上,透過PowerShell 點擊觸發遠端開發Docker命令,達成遠端建立及管理Docker Engine。
netsh interface portproxy show all netsh interface portproxy delete v4tov4 listenport=2375 listenaddress=0.0.0.0 netsh interface portproxy delete v4tov4 listenport=2376 listenaddress=0.0.0.0 netsh interface portproxy add v4tov4 listenport=2376 listenaddress=0.0.0.0 connectaddress=127.0.0.1 connectport=2375
New-NetFirewallRule -DisplayName "Allow Port 2376" -Direction Inbound -Protocol TCP -LocalPort 2376 -Action Allow
docker -H 192.168.0.88:2376 version
$tag=":latest" $imageShortName="de-next-ap" $imageName = $imageShortName + $tag $containerName = $imageShortName + "-1" $containerUrl = "192.168.0.88:2376" $dockerfile = "./Dockerfile" $port="30000:80" # 遠端停用容器 docker -H="$containerUrl" ps -a -f ancestor=$containerName --no-trunc -q | foreach-object { docker -H="$containerUrl" stop $_ } docker -H="$containerUrl" ps -a -f name=$containerName --no-trunc -q | foreach-object { docker -H="$containerUrl" stop $_ } # 遠端移除容器 docker -H="$containerUrl" ps -a -f ancestor=$containerName* --no-trunc -q | foreach-object { docker -H="$containerUrl" rm -f $_ } docker -H="$containerUrl" ps -a -f name=$containerName* --no-trunc -q | foreach-object { docker -H="$containerUrl" rm -f $_ } # 遠端移除映像檔 $existingImages = docker -H="$containerUrl" images $imageName If ($existingImages.count -gt 1) { write-host "[Removing image]Removing the existing image.." docker -H="$containerUrl" rmi -f $imageName } else { write-host "[Removing image]The image does not exist" } # # # 遠端建置映像檔 (nas 比本機電腦慢,這個就不建議了) docker -H="$containerUrl" build -t $imageName . -f $dockerfile # # 建立及啟動容器應用 docker -H="$containerUrl" run -d --name $containerName --restart=always -p $port $imageShortName pause
P.S. 如果無法 push ,docker engine 兩台記得加上這段
"insecure-registries": [ "192.168.0.88:2376" ]