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 SaaS 訂閱收費系統。閱讀更多

覺得這篇有幫助?

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

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

留言

訂閱電子報

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

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

站長的公司

Vibe Coding 架構規劃與陪跑

團隊已經用 AI 做出小工具,卻怕壞了沒人修、需求一變就不敢改?226 Network 幫你把程式放進 Git、密碼另外保管、排程搬上固定主機,再補上交接文件與測試。

熱門文章

View all
Mark Ku
··631

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

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

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

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

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

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

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

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

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

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

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

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