如何自訂Windows Container NAT網路IPAM-Subnet設定

如何自訂Windows Container NAT網路IPAM-Subnet設定

在前一篇解決 Symantec Endpoint Protection 與 Docker 相容性問題碰到一個問題,Docker for Windows 預設 NAT 網路無法重設,主要是想統一開發人員的 NAT 網路設定,這樣 IT 單位才方便統一套用防火牆規則。

我測試以下幾種方式:

  1. 在 daemon.json 指定 fixed-cidr
  2. 使用 docker network rm nat 移除,直接顯示「daemon: nat is a pre-defined network and cannot be removed」訊息
  3. 採用 Github #726 步驟,但我在 Windows 10 上執行 Get-NetNat 沒有任何訊息,Get-ContainerNetwork | Remove-ContainerNetwork 更顯示沒有此指令。

基本是都行不通。最後實在沒找到辦法才請開發人員統一自訂一條 NAT 網路。

不過就在不死心的狀態下,又在我個人的 Surface Pro 上又試了一次。

解決Symantec Endpoint Protection與Docker相容性問題

解決 Symantec Endpoint Protection 與 Docker 相容性問題

目前公司是採用 Symantec Endpoint Protection (簡稱 SEP) 方案與 Docker 一直有相容性問題,直到在追一個問題時發現 Running Docker containers in process isolation when Symantec Endpoint Protection is installed 才得以解決。但我碰到第二個問題,Container 啟動之後(例如,起一個 ASP.NET MVC 容器),請求網頁沒有問題了,但網頁如果連線至容器之外的資料庫進行存取時,那麼則會被 Symantec Endpoint Protection 內建的防火牆擋下,在 Symantec Endpoint Protection 進行防火牆設置得以解決。也就是將容器運作的 IP 網段進行排除。

SEP Firewall Traffic Log

製作Windows Container映像檔注意事項

製作Windows Container映像檔注意事項

由於專案需求多變,有時需要自行建置客製化 Windows 基礎映像檔(Base Image)來使用,就在是在微軟官方的基礎映像檔之上去安裝軟體、設定環境等,像之前的文章:WINDOWS CONTAINER之.NET CORE找不到GDIPLUS.DLL解決方案為例,我們就把 ASP.NET Core Runtime 安裝至 Server Core 基礎映像檔,微軟官方應用程式的映像檔除非特別理由,不然通常最終都會以 Nano Server 為基礎映像檔來提供。

如何快速釋放Windows Server Core記憶體!

如何快速釋放Windows Server Core記憶體!

一個有趣的Case。我們需要收集與分析機台日誌,一天資料量(Size)不大,約200 ~ 300MB,但資料量(Folders/Files)很多,目前觀測到每日約有60 ~ 70萬筆,而且還會不斷成長。資料夾與檔案數約1:2,也就是,如果當天資料夾10萬個那就有20萬筆檔案。我們需要定時去主機A把日誌同步至主機B去進行程式分析與處理,因為不是所有檔案都是我們需要的,在複製的過程會進行一些過濾動作,所以選擇下面三套來測試,但發現一個好玩的現像,主機B常常沒有多久就記憶體滿載(Memory 99%~)的情況,目前測試過:

  1. xcopy.exe
  2. robocopy.exe
  3. freefilesync.exe

使用 Log Analytics 建置 Dashboard,早期發現問題!早期治療!

使用 Log Analytics 建置 Dashboard,早期發現問題!早期治療!

Dashbard memory downline

當我們導入了 Azure Container Monitor 之後,取得另外一個好處,內建的 Log Analytics 提供強大的日誌分析功能。而且 Log Analytics 經過設計之後,這些數據分析的資料能輸出為儀表板(Dashboard)。我們製作了一個 Dashboard,然後放到團隊的電視上,圖中很明顯出現直線下滑的曲線,而那條線是 Memory 的可用率!連入主機查詢,又是可惡的 99% 記憶體。