Mark Ku's Blog

Windows Docker Desktop 用Powershell 遠端建置及佈署容器

前言

由於台灣公司缺乏專職的網絡管理人員,開發環境資源並不是這麼充足,同時也不希望負責維護一個Jenkins系統,且為了避免上傳和下載所需的時間,我也不想搭建一個Docker倉庫。因此,我現在花了些時間研究如何在 Windows Docker Desktop 遠端建置及管理。

架構

首先,我們在兩台電腦上都安裝了Docker Desktop,開發人員在他們自己的Windows電腦上,透過PowerShell 點擊觸發遠端開發Docker命令,達成遠端建立及管理Docker Engine。

開啟Docker Desktop > 設定 > 勾選 "expose daemon on tcp://localhost:2375 without TLS remote build"

Docker Desktop 設定中勾選
Docker Desktop 設定中勾選

安全性考量避免port 被試,將內部port 2375 映射 2376

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

開啟防火牆 2376 port

New-NetFirewallRule -DisplayName "Allow Port 2376" -Direction Inbound -Protocol TCP -LocalPort 2376 -Action Allow

測試

docker -H 192.168.0.88:2376 version
PowerShell 執行 Docker 連線失敗與版本資訊
PowerShell 執行 Docker 連線失敗與版本資訊

遠端佈署的腳本

$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"
  ]

參考

連結

作者

Mark Ku

擁有 10+ 年經驗的資深軟體工程師,現為 AI 應用 Builder,專注於大型平台架構與簡化複雜系統設計,從電商系統到訂閱與收費平台,結合 AI Agent、AI 整合與自動化開發,打造高效率且可持續演進的產品技術基礎。閱讀更多

覺得這篇有幫助?

作者做的免費工具、每日 Podcast 與電子報,都在這裡。

Mark Ku · 本文採用 CC BY 4.0 授權,轉載請註明作者並附上原文連結。

留言

訂閱電子報

訂閱後即時收到新文章通知,不錯過任何技術分享。

提交即表示同意接收電子報,隨時可

熱門文章

View all
Mark Ku
··604

Oracle Cloud 永久免費方案 Linux 主機及固定 IP :0 元打造雲端解決方案

Oracle Cloud 永久免費方案 Linux 主機及固定 IP :0 元打造雲端解決方案
Mark Ku
··471

告別 Postman 收費陷阱!開源 Git 原生 API 測試神器 Bruno 實戰指南

告別 Postman 收費陷阱!開源 Git 原生 API 測試神器 Bruno 實戰指南
Mark Ku
··329

一款免費開源類似於 Notion 類知識庫系統 — Outline Wiki 佈署與備份全攻略

一款免費開源類似於 Notion 類知識庫系統 — Outline Wiki 佈署與備份全攻略
Mark Ku
··240

打造高效 API 管理平台:從 0 開始部署 Kong Gateway - Part 1

打造高效 API 管理平台:從 0 開始部署 Kong Gateway - Part 1
Mark Ku
··235

訓練自己的 AI 語音:硬體門檻、開源模型比較與 LoRA 微調

訓練自己的 AI 語音:硬體門檻、開源模型比較與 LoRA 微調
Mark Ku
··216

在 Ubuntu 上設置 Samba 來共享資料夾,讓 Windows 11 用戶可以存取

在 Ubuntu 上設置 Samba 來共享資料夾,讓 Windows 11 用戶可以存取