最近在學習Docker,網路上看到很多人說Docker可以讓工作的團隊都用相同的環境開發,很好奇這到底是甚麼意思?(況且網路上許多的範例大多是應用程式的demo與講解
舉例來說,目前大家都是用visual studio進行開發,可是build的只是"應用程式"的image而已,要怎麼讓他跟我有同樣的環境與visual studio的開發環境?
甚至透過dockerfile進行共同維護?
因為同事docker pull 下來的是只是一個image,然後run,要怎麼跟環境有關係?
研究了快兩個月,一直無解,,,請各位大神解惑
以我這篇為例:古典 java tomcat server 專案 dockerize 踩坑全記錄
『工作的團隊都用相同的環境開發』在這篇中是指:
不管你丟的 war 檔是什麼,
實際 docker 運作的
tomcat serevr 都是 9.0
JDK 都是 openjdk 8
以上是 Java web 的情境。
其他還有 visual stdio、php、nginx、mysql、mongo、...的情境。
基本上是可以固定套件版本、Linux運作環境相同。
docker container 基本上可以看成是一個獨立的 Linux 環境。
因為環境有分「開發環境」和「執行環境」呀
Docker大多處理的是執行環境,我只要確保我的程式在A Image裡面可以跑,那程式給B後 Docker會負責弄出一樣的A Image,所以這樣就很方便啦
以前裝一個程式在新的機器上,可能要一起裝很多東西(像是C++ Runtuime或是LAMP),現在只要一行指令就可以確保大家的執行環境都一樣了,減少「這程式在你那裡很正常,但我就跑不起來」之類的問題。
把Docker想像成一種虛擬機或是沙盒的概念。
但沒有作業系統的包袱。
只有單純的WEB SERVER跟資料庫或是JAVA等等必要應用元件。
基本建置的包。只要能在Docker應用跑起來。
那無論在哪一個Docker應用上都能跑。且其內對應的應用也無需因為你的環境不同而做調整。
這就是Docker的好處。