用docker 改善開發流程筆記 | docker環境
在接觸docker的這三年中,從一開始的好奇和迷惘,到後來接受並享受了它的好處,途中經歷了一些不為人知的小困難,最近想寫這篇文慢慢回味並且分享一下我的docker學習心得,又因為我在development+operation方面的工作都有涉獵,更讓我對使用docker有不同的體會。加入目前的公司UmboCV[1]兩年多來,對於裡面的大小夥伴們能夠一起接受並學習docker作為開發環境,並且部署到production系統,現在回想起來,著實讓人感到興奮,畢竟在當時,使用docker並且跑在production上面的公司,少之又少,即使到了現在,也是有些公司尚未dockerize他...
在接觸 docker 的這三年中,從一開始的好奇和迷惘,到後來接受並享受了它的好處,途中經歷了一些不為人知的小困難,最近想寫這篇文慢慢回味並且分享一下我的 docker 學習心得,又因為我在 development + operation 方面的工作都有涉獵,更讓我對使用 docker 有不同的體會。
加入目前的公司 Umbo CV[1] 兩年多來,對於裡面的大小夥伴們能夠一起接受並學習 docker 作為開發環境,並且部署到 production 系統,現在回想起來,著實讓人感到興奮,畢竟在當時,使用 docker 並且跑在 production 上面的公司,少之又少,即使到了現在,也是有些公司尚未 dockerize 他們重要的 components,而我們在當時就毅然決然的全面採用 docker,真的是一項不錯的投資。
這個問題讓我回想到大學時期當網管的時候,那時有一個很重要的任務,叫做電腦教室系統還原,印象深刻的是,我採用的高科技玩意叫做 Ghost,而把硬碟 mirror 後就會產生一個文件,我們稱它為映像檔 (image),最棒的地方在於,不管你在哪台電腦上面用這個 image 做還原,他就會跟原本的製作的環境一模一樣,這帶來的好處很明顯,就是我們只要透過網路,而不需要一台一台電腦用磁片重新安裝就能使他們回復到一樣的狀態。
回過頭來講到執行環境,不管對於使用者或是開發者來說,都是一個很困擾的問題,同樣的程式在不同的 OS, libarary下面執行,總是會有不同的執行結果和產生不同的臭蟲。舉個例子,在我的大學期末專題中,常常遇到不同人開發的程式,在其他人的電腦上面執行不了的問題,最慘的就是沒辦法在助教的電腦上面執行,而在當時筆記型電腦不盛行的時代,還需要人肉到助教的實驗室,借用電腦把程式修好。
再來到了雲端時代,在 AWS/Azure/GCP 上面有很方便的方法,幫忙你把既有的 VM 打成 image,可以很快地在不同的 instance type 上面做還原,然後個人電腦也有像是 virtualbox, vmware 加上 vagrant 去模擬不同的環境,打包好的 image 還有 config 也可以跟其他人互通有無,其實已經比以前方便非常多了!