The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

深入剖析 docker run 與 docker exec 的 -i 與 -t 技術細節

我們在跑 Docker 容器時,經常會用 -it 這個參數來啟動容器,並且在容器中執行命令。不過長久以來我並沒有真正深入理解這兩個參數的用法與使用情境,以至於我昨天在跑一個 MySQL 容器時,就又再次遇到相關的問題。經過深入研究後發現,覺得這背後的基礎原理還是要知道才行,所以這篇文章我打算來好好說明一下這兩個參數選項的技術細節! 👍

... 繼續閱讀 ...

如何讓 Docker Desktop for Windows 在系統開機時自動啟動

我們公司內部有台 Windows 10 測試機,幾乎所有的環境都跑在 Docker 容器中,但這台 VM 每次重開的時候,都需要人工進入系統啟動 Docker Desktop 並且手動執行因為重開而被停止的容器。這篇文章我打算來分享一個小技巧,教你如何將現有正在執行的容器,可以在系統開機時就自動跑起來。

... 繼續閱讀 ...

在 Docker 或 Kubernetes 執行 SQL Server Linux 容器應注意記憶體限制問題

前幾天一樣在客戶端進行 Kubernetes 教育訓練的時候,發現有少部分學員無法正確部署應用程式,我們的例子是一個 ASP.NET Core 網站,搭配一個 SQL Server Linux 容器,然而在練習實作 livenessProbe 的時候,卻發現有些人怎樣都無法將 SQL Server Linux 容器啟動,但是若將 livenessProbe 設定移除,服務可以啟動。若將 Pod 中容器記憶體限制移除,服務也可以順利啟動。是不是有點詭異?這篇文章我就來說說這個來龍去脈!

... 繼續閱讀 ...

使用 Dockerfile 建置容器映象(image)時應多注意「換行符號」帶來的影響

今天使用 Visual Studio Code 的 Remote Development 將一個 .NET 6 與 SQL Server 開發環境全部放到 Docker 容器中。雖然照著文件操作都很順利,但在專案加入版控之後,問題就出現了。這篇文章我想點出現今容器化、跨平台的時代中,換行符號其實不得不面對他,否則遇到問題會無所適從。

... 繼續閱讀 ...

Windows 10 同時有兩個應用程式 LISTEN Port 7777 之靈異事件整理

昨天同事問我一個關於如何在 nginx 設定 Reverse Proxy 的問題,我在跟他說明作法之後,想說也來驗證一下,結果卻意外遇到一個網路相關的靈異事件,瞬間讓我陷入一個抓鬼情緒,花了大概一個小時左右才釐清問題。今天這篇文章我打算來說說這個狀況,相信你也會覺得毛骨聳然的。

... 繼續閱讀 ...

使用 Azure Developer CLI 改善 Azure 開發人員的整體開發體驗 (DX)

Azure Developer CLI (azd) 是一套以開發者為中心思考的命令列工具,專門用來建立可以部署到 Azure 的雲端應用程式。他提供一組命令可以幫助你在開發專案時,可以在專案範本、設定 CI/CD、整合開發工具(IDE)之間擁有一致的開發體驗,而且可以大幅降低 Azure 部署的進入門檻。這套工具還在預覽階段,專案範本很少,不過感覺很有發展潛力,今天這篇文章,我就來帶大家走一遍這套工具的使用過程。

... 繼續閱讀 ...

開發與部署網站時需注意不要使用到 ERR_UNSAFE_PORT 不安全的埠號

我昨天在授課的時候,突然遇到 Chrome 瀏覽器無法瀏覽網站的情況(ERR_UNSAFE_PORT),我踩到一個不知道算不算罕見的地雷,在深入瞭解之後,覺得有必要寫成文章提醒大家,因為你還真的很有可能會在不久的將來遇到這個問題,看完文章才不會讓你日後鬼打牆太久,讓我們繼續看下去。

... 繼續閱讀 ...

如何在 Windows Server 2022 使用 containerd 執行 Windows Containers

其實 Windows Containers 都是以 Windows Server 為基礎的 base image 來運行的,但從 2021 年 9 月微軟發佈了 Updates to the Windows Container Runtime support 文章,預告了未來將不再使用 DockerMsftProvider API 來安裝 Docker EE (企業版) 軟體,之後預計會全部移轉到開源的 containerdMoby 或即將轉付費方案的 Mirantis Container Runtime 等等。這幾天我就想說來研究一下如何用 containerd 來執行 Windows Container,結果根本就是在玩踩地雷,我研究了足足三天才搞定完整可成功運行 Windows Containers 的 containerd 容器環境!這篇文章我將分享我在 Windows Server 2022 實作的完整過程。

... 繼續閱讀 ...

執行 Docker 容器可使用 dumb-init 或 tini 改善程序優雅結束的問題

現在越來越多環境都跑在 Docker 環境下,但不知道你是否有遇過想要停止容器,但執行 docker stop 之後卻無法立即停止的狀況?這個問題會牽扯到我在 當 .NET Core 執行在 Linux 或 Docker 容器中如何優雅的結束 文章中提到的 訊號(Signal) 是如何傳送到容器的程序。這篇文章我將更深入的探討這個問題,以及提供解決方法。

... 繼續閱讀 ...

Docker Desktop for Windows 啟動的容器無法透過遠端連接的靈異事件簿

今天因為要維護一個 11 年前完工的專案,特別把當時的 VM 還原到 Hyper-V 裡面執行,而 SQL Server 的部分我就打算直接跑在容器中。因為我的 VM 跑在 External network 網路下,所以等同於是區域網路的另一台電腦要連到我的 SQL Server on Linux 容器。照理說這應該只是個很簡單的問題,但是我的 VM 就是怎樣也連不到我這台電腦的 SQL Server 容器,網路就是打不通!最後搞了一整個上午,才真正釐清真相!

... 繼續閱讀 ...

快速體驗建構在 Dapr 架構下的微服務應用程式並部署到 Kubernetes 叢集

Dapr (Distributed Application Runtime) 是一個分散式應用程式的引擎(Runtime),他幫助開發者能在微服務架構下建構事件驅動(event-driven)、高彈性(resilient)的分散式應用程式。他可以幫助你在打造微服務架構的同時,又能徹底簡化應用程式開發的複雜度,大幅降低服務與服務之間的耦合性,真的是非常漂亮!這篇文章我將分享如何透過一個簡單的例子(hello-kubernetes),讓大家瞭解 Dapr 的運作原理。

... 繼續閱讀 ...