沒有企業軟件是單獨運行，必定會有作業系統和第三方組件等配合，所以發布軟件時，相關組件包、平台版本和參數設定均需要跟蹤。這並非甚麼高難度的工作，但也很費時的，先分享 3 個實例：
（1）1996 年，香港百佳超市內部開發的系統要發布到上海百佳運行，為了確保零風險，新購伺服器先運到香港公司安裝和測試系統，然後再把伺服器轉到上海 — 可否有更快捷的方法？
（2）2011 年，評估一個科研項目的風險。該項目是把《維基百科》內容轉為認知數據庫作為智能搜尋，開發者沒有明確記錄安裝步驟和版本，項目採用太多開源組件， 新版本組件的設定可能有出入， 使得每次從新安裝都有很多「小」問題。可否有一個檔案記錄步驟和版本，還可以自動執行？
（3）2015 年某個政府資助項目，主要是培訓業界使用不同測試流動應用程式（app），從而提高他們開發高質 app。培訓軟件中，以 Distributed JMeter 環境設定為複雜，在 1 台實體電腦模擬 1 個多台電腦的網絡。我們採用虛擬機器（VM），雖然每個 VM 的影像（image）是一樣，但當運行 5 個 VM，便需 5 個獨立影像。有更省資源的方法嗎？
軟件發布方法有否終點站？ 2016年，國外開發者關注 1 項成熟的技術：Docker。它有點類似虛擬機器，但技術概念不同。下面解說 Docker 運作：
首先，我們的編程員電腦和生產環境伺服器皆已安裝 Docker。編程員開發了自家 ERP（企業資源規劃）系統，並發布到伺服器裏。編程員建立 1 個安裝步驟和設定的檔案（Dockerfile）， Docker 便會自動按這檔案生成 1 個有層次（layer）結構的唯讀影像。層次結構概念很重要，當 Docker 運行這個影像時，會在唯讀影像之上再建立 1 個可讀寫的層，使得數據、參數和檔案更新等均記錄在可讀寫的層；而運行起來的 ERP 系統，在 Docker 術語叫「Container（容器）」。
如果我們要在伺服器上運行 3 個獨立 ERP 系統，分別用作培訓、實習和日常運作；我們要建立 3 個 Container，Docker 會設立 3 個獨立讀寫層在相同唯讀影像上，所以我們是用 1 個唯讀影像運行多個 Container。
還有 Docker 影像比虛擬機影像小，更快上傳到雲端，常用的雲是 Docker Hub。在生產環境伺服器上，從 Docker Hub 下載我們的 Docker 影像，便可即時運行，毋須再測試。假如生產環境伺服器不是實體機，而是租用雲端虛擬機（IaaS），只要能安裝 Docker 便沒問題。
重點來了，我們可否直截了當租用 Docker 呢？這不就更簡單。沒錯，這就是 CaaS（Container-as-a-Service），費用也比 IaaS 低幾倍，因而成為目前大趨勢。
雷劍文是香港電腦學會軟件及系統過程改善專題小組委員。