跳到主要內容

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 所需要的環境。這解決了以前工程師常說的那句話 "在我的電腦上跑得好好的,為什麼在正式環境就行不通" 的問題。

 

參考連結

留言

這個網誌中的熱門文章

加密貨幣交易實戰心得筆記

加密貨幣交易實戰心得筆記 . 對於加密貨幣,雖然公司有個團隊已經在開發相關產品,但我自己只有大概了解什麼是加密貨幣,什麼是比特幣,以及什麼是區塊鍊。雖然稍微知道,但也只是知道,並沒有真的去購買跟投資。 . 幾天前公司舉辦了一場課程,邀請了史旺基到公司分享加密貨幣的交易實戰。課程需要自費,但其中包含了直接幫我們購買比特幣,並將購買的比特幣交易給我們。可以實際接觸到加密貨幣的交易讓我很期待,因此毫不猶豫的就參加了這堂課程。 . 這堂課程並不是在技術上來跟你說什麼是加密貨幣或是區塊鍊的技術是什麼,它著重在由淺入深的介紹什麼是比特幣、什麼是區塊鍊、什麼是去中心化、什麼是挖礦、誰是中本聰、什麼是以太坊以及以太幣、什麼是熱錢包以及冷錢包,等等這類的相關資訊。 . 學習並了解上面介紹的基本資訊之後,課程的重點放在了交易所的介紹與操作上面。我們一步一步的申請了台灣的兩個交易所,分別是 MaiCoin 以及 BitoEX。相信有在投資比特幣的人應該都已經知道,但對於沒有追上潮流的我來說,這個資訊真的是省了我很多研究的時間,立刻感覺前進了一大步,雖然手續費高常常可能卡幣,但中文介面,簡單的認證與交易方式,讓我感覺已經真的觸碰到了比特幣與區塊鍊的邊。 . 除了台灣交易所,更有國際交易平台的介紹與教學,這邊我就不一一介紹了,因為我自己也都還沒申請,而且這些國際平台很多是停止申請帳號的。 . 另外還有更多的資訊,包括怎麼開始投資,投資心法以及不少的中英文介紹資料,包括App的介紹。 . 這堂課除了讓我立刻從門外漢大躍進成初心者,更是直接開始打怪(購買)了,破除了這個最大靜摩擦力之後,我讓我的投資標的又多了一個可能,感覺非常值得。

.NET 5.0 筆記

.NET 5.0 上線啦! 這次帶來什麼樣的改變呢? .NET 5.0 的前一版是 .NET Core 3.1。 等等,為什麼不是 .NET 4.x 呢? 難道歪果仁也不喜歡 4 這個數字嗎? 當然不是,這是因為 4.x 很容易跟 .NET Framework 4.x 搞混,造成搜尋上的麻煩。 不過這只是其中一個理由,另一個理由是因為想把 Core 這個詞拿掉,原因是 .NET 5 是接下來的主要實作平台,其支援比 .NET Core 以及 .NET Framework 還要更多類型的應用程式或是更多的平台。 至於 ASP.NET Core 5 還是會有的! 是以 .NET 5 為基礎的核心實作。保留 Core 這個字 就是為了與 ASP.NET MVC 5 作區別 (他們總算了解之前查資料有多困難XD),同樣的 Entity Framework Core 5.0 也會保留 Core 來跟 Entity Framework 5/6 作區別。 還有幾點是蠻重要的,.NET 5 做為未來的主要實作,但並不會取代 .NET Framework 4.x,.NET Framework 4.x 仍然會繼續支援。不過 Web Forms 技術將不會有轉移到 .NET 5 的計畫,取而代之的是有替代方案,例如 Blazor 或是 Razor page。 接下來讓我們期待 .NET 6.0 的登場吧! 畢竟這才是下一個 LTS 的版本阿!~