跳到主要內容

發表文章

目前顯示的是有「docker」標籤的文章

Docker vs VM 的學習

工作上用到 Docker 也一段時間了,剛接觸到 Docker 時常常會聽到別人這樣解釋," Docker 的 Container 技術,類似於 VM 。差別是 Container 比較小,沒有包含 OS,而 VM 會包含 OS"。 這段話我覺得不算是全錯,所以我一開始也是這樣去解釋給別人聽,直到我聽到我同事在面試求職者時問了這句話,"如果 Container 比較快,比較輕量,優點這麼多,為什麼 VM 沒有被淘汰?" 我才忽然意識到,我並沒有真正瞭解這兩種技術的差別。 事實上,這件事情要從解決問題的角度上出發去理解。任何技術的產生應該都是為了解決某些痛點,從這點來思考的話網路上就有很多文章可以查到了,我把我查到的最清楚的文章連結放下本文最下方,有興趣的可以去看看。 VM 是為了解決硬體的資源共享的問題所產生出來的技術,而這個需求仍然存在,並不會因為有了 Docker 的 Container 技術就取代了。這個可以回答為什麼 VM 沒有被淘汰。因為要解決的問題不一樣,事實上很多 Container 還是跑在 VM 裏頭,可謂是相輔相成。 那 Docker 是為了解決什麼問題才發明的呢? 我的消化與理解是 "解決建置環境的複雜度" 而發明的,每個 Dockerfile 會指定使用的映象檔(image),然後寫下需要安裝的 Tool 指令。按照這個 Dockerfile 上面列下的指令去安裝與建置,就可以重現執行這個 APP Runtime 所需要的環境。這解決了以前工程師常說的那句話 "在我的電腦上跑得好好的,為什麼在正式環境就行不通" 的問題。   參考連結

Docker 簡單指令筆記

 最近剛看一個影片在講 Cloud Run, 心血來潮的來試用看看。結果碰到一點小問題,要透過本機端先建立 container 來試跑才能節省時間。因而發現,之前太常使用 k8s 以至於 docker 的指令反而沒那麼熟悉了,特別筆記一下常用的指令。 docker build 建置 docker image by Dockerfile with tag docker build -t {imageName} . docker run 執行 docker container with port mapping local 5566 to docker container 8080 docker run -p 5566:8080 {imageName} docker stop 暫時停止 docker 的執行 docker stop {containerName} docker container start 把停止執行的 container 啟動 docker container start {containerName} docker ps 列出所有 docker container docker ps -a 列出目前執行中的 containner docker ps  docker rm docker rm {containerName} 以上幾個指令就可以在本機環境完整的跑 container 起來測試瞜