Windows 的 Docker Container 主要是通過 WSL 虛擬化 Linux Kernel,由於 Windows 作業系統本身會消耗部分資源,加上虛擬化過程的轉換,效能相較於原生 Linux 顯得不足,目前大多數的容器應用程式都是基於 Linux。
此外,Windows Docker Container 的穩定性也不如 Linux Docker Container,我們經常因Docker Desktop 更新或機房斷電而出現問題,例如容器遺失或 Docker Engine 損壞等情況。
因此,我決定先將台灣的開發環境,先試著遷到到Linux 的開發環境試試,再逐步替換掉生產環境的 Windows 伺服器。
為了降低學習與移轉門檻,同時便於維護,我們選擇了帶有圖形介面 (GUI) 的 Ubuntu 版本,讓大家能逐步熟悉 Linux 環境。
停用自動更新及開啟open ssh server
sudo systemctl stop unattended-upgrades sudo systemctl disable unattended-upgrades sudo apt install openssg-server # oppen 22 prot
為了方便管理與維護,我們架設了一套類似 TeamViewer 的遠端管理工具 RestDesk。
👉 如何架設 RestDesk
由於我們的資料庫是 MSSQL,需要將備份檔案從 Windows 傳到 Linux 上。為此,我們設定了 Samba 共享資料夾以便雙向訪問。
MSSQL 其實容器化很久了,Microsoft 提供了在 Linux 容器中運行 MSSQL 的教學,以下是主要步驟:
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=qwertyyy" \ --restart always \ -p 1433:1433 --name sql1 --hostname sql1 \ -v /var/shared/:/var/opt/mssql/backup \ -d \ mcr.microsoft.com/mssql/server:2022-latest
📌 注意:備份資料夾映射到 /var/shared/
,備份檔案可透過 SQL Server Management Studio (SSMS) 還原。
SQL Server Management Studio (SSMS) 僅提供 Windows 版本,因此還原操作需在 Windows 上執行。 使用SSMS 連線到資料庫,右鍵Restore,接著並在/var/opt/mssql/backup/找到你的備份檔
由於開發環境需要與其他國家同步資料,我們在 Linux 上配置了 OpenVPN 來實現。
👉 如何設定 OpenVPN
記得開啓相關連接埠號
sudo ufw allow 8080
在 Ubuntu 上安裝 Docker Desktop 時發現無法啟用 2375 埠號,解決方法是不要透過Docker Desktop。 👉 詳細設定步驟
為了將一些應用程式給外部使用,因此要安裝 Cloudflare Tunnel,此篇是透過 Docker 配置 Cloudflare Tunnel,以下為操作步驟:
sudo docker run --restart always cloudflare/cloudflared:latest tunnel --no-autoupdate run --token {{your-token}} --name cloudflared-tunnel
編輯檔案 /etc/systemd/system/cloudflared.service
:
[Unit] Description=Cloudflared Tunnel Service After=network.target [Service] ExecStart=/usr/bin/docker run --rm --name cloudflared-tunnel cloudflare/cloudflared:latest tunnel --no-autoupdate run --token {{your-token}} Restart=always RestartSec=5 [Install] WantedBy=multi-user.target
啟用服務:
sudo systemctl enable cloudflared.service sudo systemctl start cloudflared.service
就算不熟Linux 指令,透過chatgpt 幫你轉換,其實蠻快速的。
逐步將 Windows 替換為 Linux 的過程,不僅提高了系統穩定性與效能,這個過程也對Linux 更為熟悉。
燒機工具
sudo apt install stress-ng #!/bin/bash DURATION="120s" echo "壓力測試開始...." #CPU 壓力測試: 使用 4個CPU 核心 echo"CPU壓力測試.." stress-ng --cpu 4 --cpu-load 100 --timeout $DURATION # 記憶體壓力測試:創建 10 個進程,每個分配 180M 記憶體 echo "記憶體壓力測試..." stress-ng --vm 20 --vm-bytes 500M --vm-keep --timeout $DURATION # 磁碟 I/O 壓力測試:創建 5 個進程,每個進程寫入 10G 數據 echo "磁碟 I/O 壓力測試..." stress-ng --hdd 10 --hdd-bytes 20G --timeout $DURATION echo "壓力測試完成。"
監測工具
sudo apt install stress-ng sudo apt install s-tui