Docker | The Will Will Web

The Will Will Web

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

執行 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 的運作原理。

... 繼續閱讀 ...

使用 WSL 2 與 Docker Desktop 架設 Kubernetes 多節點叢集環境 (KinD)

在學習 Kubernetes 的時候,單一節點的 Kubernetes 測試環境已經可以讓你理解許多物件的建立與操作,對於「應用程式的開發人員」來說已經足夠。由於 Kubernetes 提供不同層級的「抽象」,照理說在不特別理解 Kubernetes 配置的情況下,應用程式都應該能正常運行才對。但如果想測試一些只有多台節點才能測試的功能,就需要相對完整的叢集才能測試了。本篇文章將分享 KinD (Kubernetes in Docker) 這套工具,可以幫助你在幾秒內成功架設擁有多節點的 Kubernetes 叢集環境。

... 繼續閱讀 ...

使用 Docker 執行 SQL Server on Linux 容器之常用工具與命令

最近因為正在進行【ASP․NET Core 3 開發實戰:從入門到進階】課程,上課的學員中使用 macOS 來學習 .NET Core 的人越來越多,當練習到 ASP․NET Core 搭配 Entity Framework Core 的時候,因為會用到 SQL Server 進行練習,所以本篇文章將分享如何利用 Docker 執行 SQL Server on Linux 容器,並分享幾個常用的工具命令與使用範例。

... 繼續閱讀 ...

當 .NET Core 執行在 Linux 或 Docker 容器中如何優雅的結束

當我們將 .NET Core 跑在 Linux 或 Docker 容器中,我們不但希望程式可以穩定的執行,當程式需要結束的時候,更應該考慮如何「優雅的結束」(Graceful Shutdown)。這部分資訊很難在 docs.microsoft.com 或 GitHub 原始碼專案中找到,本篇文章將分享 .NET Core 如何捕捉作業系統送出的 TERM 訊號,在關閉程式前可以妥善處理程式結束前該做的準備。

... 繼續閱讀 ...

建立 R 開發環境:起手式

要開始建立 R 的互動執行環境,有些安裝與設定的步驟,對於完全沒用過 R 的人來說,可能會卡關一下。我特別寫了這篇文章,紀錄建立 R 開發環境的起手式,以及執行在 Docker 的一些注意事項。

... 繼續閱讀 ...

如何在 Windows Containers 建立內含正式 SSL/TLS 憑證的 IIS 網站

若想將 ASP.NET 網站安裝至 Windows Containers 容器中,其實還算簡單,直接使用微軟官方提供的 mcr.microsoft.com/dotnet/framework/aspnet:4.8 容器映象就可以立即使用。但如果要另外安裝 SSL/TLS 憑證的話,那就顯的有點麻煩了,即便官方有提供簡易範例,但要調整為正式憑證的話,網路上似乎沒有完整的文章說明,本篇文章就來詳實記錄所有的技術細節。

... 繼續閱讀 ...

如何進入 Docker Desktop 的 MobyLinuxVM 並調整系統參數 (WSL 2)

昨天在 Docker Desktop 2.3.0.2 (45183) 啟用 WSL 2 支援之後,我原本跑在本機 Docker 的 Elasticsearch 就無法啟動了。從 log 下去看,會感覺是記憶體不夠的問題,但是 Docker Desktop 搭配一個較為輕量的 WSL 2 核心引擎,因此從 Docker Desktop 的 Settings 介面卻怎樣也找不到調整 CPU & Memory 的地方,卡了十幾分鐘才找到解決辦法。

... 繼續閱讀 ...

Windows Container 版本相容性與多重架構容器映像介紹

自從 Windows 核心版本 v14393 開始,也就是 Windows Server 2016 LTSC 與 Windows 10 年度更新版,正式開始支援 Windows 容器,這意謂著企業可以開始將傳統 Windows 應用程式正式容器化,透過容器化技術隔離應用程式,最大的優勢,就是容器技術會讓應用程式不會再遇到部署環境變更導致的任何問題。不過 Windows 核心版本不斷更新,也開始出現了相容問題,本篇文章將說明各種容器相容性的解決方案。

... 繼續閱讀 ...