Mark Ku's Blog
首頁 關於我
利用 Powershell 遠端建置及佈署 Windows Docker Desktop 容器
PowerShell
利用 Powershell 遠端建置及佈署 Windows Docker Desktop 容器
Mark Ku
Mark Ku
May 31, 2023
1 min

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

前言

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

架構

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

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

安全性考量避免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

遠端佈署的腳本

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

參考

連結


Tags

Mark Ku

Mark Ku

Software Developer

8年以上豐富網站開發經驗,直播系統、POS系統、電子商務、平台網站、SEO、金流串接、DevOps、Infra 出身,帶過幾次團隊,目前專注於北美及德國市場電商網站開發團隊。

Expertise

前端(React)
後端(C#)
網路管理
DevOps
溝通
領導

Social Media

facebook github website

Related Posts

使用Powershell 備份及還原 Windows docker 容器
使用Powershell 備份及還原 Windows docker 容器
November 18, 2023
1 min

Quick Links

關於我

Social Media