自從電腦問世以來,若要將程式無縫的轉移到其他機器上成功運行,那麼環境架設就是一個必須要優先解決的難題。每台機器其 CPU 所使用的指令集、作業系統、共用程式庫甚至是版本差異,都有可能造成程式無法正常運行。
虛擬化技術的出現和日益成熟,讓應用程式層和真實的電腦資源做出區隔。換言之,將應用程式執行於虛擬化環境,讓不同機器間僅需要製造出一模一樣的虛擬環境,就可以確保應用程式的行為可以完全一致。
透過 Hypervisor 所進行的軟體虛擬化,算是一般使用者最常接觸的虛擬技術了。例如 Java 的 JVM ( Java Virtual Machine )、VMWare 的 Virtual Box ...等。這樣的虛擬化的平台結構是相當緊密的。但也因如此,在軟體架構的更換上也受限於耦合性高不易改動的境地。
容器技術 ( Container ) 使的程式間的耦合性得以下降。換言之,一個服務系統可以由多個不同應用程式容器組合而成,若要進行抽換、版本更新...等也變得容易許多。你可以把它想像成堆積木一樣。
1. 先申請好一台虛擬主機,例如 Linode 上的每月 5 USD 方案
2. 安裝好 docker 和 docker-compose
3. 撰寫 docker-compose.yaml 以一次安裝多個容器服務和設定好彼此間的關聯 ( 這一點網路上通常都已有現成範本 )
4. 執行 docker-compose up 等候安裝完成