1.4 我可以用 Docker 做些什麼?
上一小節說明了什麼是 Docker 後,可能還是很難有共鳴,畢竟很多的工具都是在解決了實際的問題後才會感受到其強大之處。
所以我們用現實會發生的情境來舉例!
假設您是一個 Web 工程師,可能曾經遇到過要跑測試,自己手動部署,接著再手動測試應用程式的循環之中,一天的時間除了開發之外,有一堆時間在等待,或是痴痴地看著終端機在表演。
一次兩次或許會覺得還好,但長時間下來就有可能會造成程式碼的品質下降,畢竟你除了要寫好程式之外,還要分心在部署以及測試上,但一天的時間就那麼多,除非要自願性加班,不然可能會產生 程式碼只要能動就好了 的心態,久而久之,變成一個惡性循環。
以上的情境可以透過 Docker 容器便於遷移的特性輕鬆地建立起 CI / CD 的流程,讓您將程式碼推上 GitHub 後,就可以去做別的事情,等待 CI / CD 的流程中沒有出現差錯後,就會自動部署最新的版本到網站上。
以前的情況也不是做不到 CI / CD,但在 Docker 的出現後,讓這件事情的建置難度大幅度地下降,如同前面提過關於容器中環境的一致性,讓我們在自動化測試的階段、自動部署的階段,都能夠拋開不同作業系統所帶來的難題。
也是提到 Docker 很難不提到 CI / CD 的主要原因。
第二個情境,今天公司有新的同事上工了,給了他一份完整的上工文件,裡面包含了開發所需要的相依套件版本,作業系統版本,程式語言版本等等。
並且讓他在自己的電腦中安裝符合的開發環境,經過一整個早上,某個套件沒辦法編譯,程式語言遇到路徑設定的問題,作業系統需要升級等等。
您可能就要親自抽空過去幫忙看看問題出在哪,而且現在還流行遠端工作,對於新人上工所遇到的問題,很難透過遠端去解決,導致雙方都因為建立開發環境而消耗了很多本來可以節省的時間。
以上的情境,我們可以透過 Docker Compose 來設定好一個固定的開發環境,而且上工的文件中,只需要給予環境變數等等相對敏感的資訊,並且附上使用 Docker 會遇到的幾個 Q&A,之後透過 Docker Compose 就能一鍵啟動整個開發環境。
讓新來的同事只要安裝 Docker 就能夠快速上工,免除了開發環境不相同的煩惱,同時也讓生產力的銜接能夠不間斷。
當然還有很多都可以做到,像是今天買了一台新電腦,可以不需要安裝太多的編譯工具和服務 ( Redis、PostgreSQL 等等 ) 在電腦上了,我只需要安裝 Docker,我就可以得到大部分 Web 開發所需要的服務,並且讓新電腦保持一個乾乾淨淨的狀態,想到就覺得非常愉悅呢。
上述都是您可以用 Docker 做到的事情,或許在學習的過程中,也意外地發現還可以用 Docker 做些特別的事情也不一定呢!