程式在自己電腦可以執行,交給同事卻一直報錯。有人少裝套件,有人的版本不同,一場原本要討論功能的會議,最後都在排查環境。
能不能把程式需要的執行環境一起交接,讓大家從同一個起點開始?
張成龍老師有超過二十年的軟體開發與數據應用經驗。他在學思酷的《Docker 系統化學習全攻略:新手也能輕鬆掌握容器技術!》中,帶學員練習容器觀念、映像檔建置與多服務部署。
這份專訪文稿從一件常見的工作切入,談怎麼上手、怎麼檢查成果,以及怎麼把做法帶回工作現場。
講師介紹|張成龍
AI 實戰落地專家,「龍龍 AI 實戰學院」創辦人
- 現任台灣前二百大上市公司數據應用單位主管,具備超過二十年軟體開發與數據應用架構經驗。
- 台灣人工智慧學校第一期技術領袖班結業,具備國際專案管理師(PMP)資格。
- 經營 YouTube 頻道「龍龍 AI 實戰學院」,分享 AI 工具、開發與自動化實作。
- 於巨匠電腦、104、PPA、Udemy、中華人事主管協會等平台授課,累積上架超過三十部 AI 課程。
- 曾受邀為遠東 SOGO 百貨、行政院人事行政總處公務人力發展學院、財政部財政人員訓練所、新北市警察局及桃園市政府等企業與公部門授課。
- 著有《Google Gemini 全能工作流》、《ChatGPT 5實戰應用》、《ChatGPT 4實戰應用》等書。
張成龍老師的教學從真實工作需求出發,重視逐步操作、理解資料如何流動,以及成果能否實際使用。希望學員遇到不同情境時,也有能力調整流程、找出問題。
專訪問答
Q1:Docker 能解決哪一種交接麻煩?
我會先回想一次專案交接:對方拿到程式後,要猜哪些安裝步驟、哪些設定沒寫下來?把應用程式、相依套件和啟動方式寫成建置規格,這些資訊就有了共同依據。
同事用相同的映像檔啟動容器,遇到問題也比較容易縮小範圍。連線設定、資料存放位置等環境差異,仍應另外寫清楚。
Q2:映像檔和容器差在哪裡?
我常用一個小實驗解釋:從同一個映像檔啟動兩個容器,你會得到兩個各自執行的實例。映像檔提供啟動所需的程式與環境,容器則是實際跑起來的那一份。
學習時可以分別練習查看映像檔、啟動和停止容器,觀察服務狀態與日誌。等概念清楚,再自己寫 Dockerfile。
Q3:會寫 Dockerfile 以後,還需要 Docker Compose 嗎?
一個 Web 應用常要配一個資料庫。Dockerfile 可以描述應用程式怎麼打包,Compose 則能把兩個服務、網路與資料卷的配置放在同一份設定。
我會讓讀者從啟動兩個服務開始,確認 Web 應用找得到資料庫。能說清楚各自負責什麼,才有辦法在其中一個服務失效時排查。
Q4:容器砍掉重建,資料會跟著消失嗎?
如果資料只寫在容器內,移除容器就可能失去那份資料。資料庫這種需要留存的內容,可以透過資料卷與容器的生命週期分開管理。
練習時先新增一筆測試資料,再重建容器,看看資料是否還在。用這種方式驗證,比只看到服務成功啟動更接近實際部署。
Q5:第一次容器化自己的專案,可以從哪裡開始?
我會選一個輸入、輸出都容易驗證的 Flask API。先在本機跑通,再把套件和啟動指令寫進 Dockerfile,確認改用容器後仍能取得同樣的回應。
熟悉單一服務後,再試著加入資料庫,或把同樣方法用在 Node.js 與 Jupyter 分析環境。每次增加一個變化,比較容易看懂是哪個設定影響結果。
《Docker 系統化學習全攻略:新手也能輕鬆掌握容器技術!》
課程以八個模組安排學習,從啟動容器到把 Web 應用和資料庫一起部署,也涵蓋資料分析環境。
課程重點
- 容器入門|安裝 Docker,啟動第一個容器,認識映像檔與容器的關係。
- 專案打包|撰寫 Dockerfile,建置映像檔並練習容器化 Flask API。
- 資料與連線|使用 Volume 留存資料,理解容器網路與服務互通。
- 多服務管理|用 Docker Compose 描述應用程式與資料庫的配置。
- 專案實作|把容器化應用到 Python、Node.js、Jupyter 資料分析與網站部署。
這堂課適合剛接觸容器的新手,以及希望改善開發環境交接與專案部署的開發者。
從一支已經能在本機執行的程式開始,把它打包成下一位同事也能啟動的專案。
