
由於台灣公司缺乏專職的網絡管理人員,開發環境資源並不是這麼充足,同時也不希望負責維護一個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"
]

