給 PHP 開發者的 Docker 文件(三)

閱讀時間約 5 分鐘
圖片來自 Shine With Sapphire
(本文譯自〈Docker for PHP Developers〉)

Docker 和 Vagarant 有什麼不同?

如果在每個專案同時運行多個容器(container)的情況下 Docker 比 Vagrant 好在哪裡?會比用 Vagrant 同時跑多部虛擬機的方式差嗎?No,原因如下述。

Docker 映像是可擴展的(Extendable)

Docker 映像可擴展它的父映像(parent image),這點讓 Docker 映像更加類似於 PHP 類別(class)。例如一個 Nginx Docker 映像可擴展自 phusion/baseimage Docker 映像,並且 phusion/baseimage 也擴展自最父層(top-most)的 ubuntu Docker 映像。每一個子映像只會包含與父映像有差異的部份,也就是說 ubuntu 映像只是一個小型的Ubuntu 作業系統;而 phusion/baseimage 裡面只有一些用於強化 Docker 容器(container)與作業的工具;最後的 Nginx 映像裡面也只有 Nginx 網頁伺服器和它的組態檔案。
互不相關的 Docker 映像也有可能擴展自同一個父輩(ancestor)映像,Docker 也鼓勵這麼做,如此一來那些被重複運用的映像只要下載一次就好。舉例來說,如果一個 Nginx 和另一個 PHP-FPM 映像都擴展自同樣的 ubuntu:14.04 Docker 映像,那麼這個共同的 Ubuntu 映像只要下載一次就好了。

Docker 容器是輕量的(Lightweight)

Docker 容器是輕量的並且僅需求少量的系統資源就可運作,實際上只要需要的 Docker 映像下載好後,把一個 Docker 映像實例化(instantiating)成 Docker 容器跑起來只需要花幾秒鐘的時間,相較之下用 vagrant up –provision 去建構及腳本化實現(provision)一台虛擬機時常常都要花個 15 - 30 分鐘的時間。這樣的高效率基於兩個原因,首先每個 Docker 容器其實就只是個沙盒的系統程序(sandboxed system process),一個程序只做一件事;其次,所有的 Docker 容器都跑在一個共享的 Docker 母機(host machine),母機可以是你自己的 Linux 作業系統也可以只是個小型的 Linux 虛擬機。
Docker 容器同時也是暫存的(ephemeral)與免洗的(expendable),你可以摧毀(destroy)與取代(replace)某個 Docker 容器而不致影響到整個大型應用(application)。
假使容器只是暫存的,那我們要如何保存要留下的(persistent)應用資料?我也有過相同疑問。我們透過 Dockr 容器卷宗(volume)保存(persist)應用資料在 Docker 母機上。在後文中談到實例化 MySQL 容器時我們會再談談 Docker 容器卷宗。

相同母機、不同世界

不像 Vagrant,每個專案都需要完整的虛擬機(virtual machine)、檔案系統(filesystem)、與網路架構(network stack),Docker 容器跑在單一個共用的 Docker母機,怎麼辦到的呢?不同的 Docker 容器如果佔用到同樣的檔案系統或系統資源時不會互相衝突(collide)嗎?不會,而且這正是 Docker 的拿手絕活(pièce de résistance)。
Docker 被建立在它自有的低階的 Linux 函式庫上,稱為 libcontainer,這個工具透過對各種 Unix 與 Linux 的轉接器(adapter)來沙盒化單一的系統程序並限制它們存取系統資源。Docker 的 libcontainer 函式庫可讓不同的系統程序共存於同一個 Docker 母機上並且存取它們各自沙盒化的檔案系統與系統資源。
也就是說,Docker 並不只是 libcontainer 而已,Docker 是封裝(encapsulate)了許多包括 libcontainer 內的工具包,它具有 Docker 映像建立(creation)、移植性(portability)、版次性(versioning)、與分享(sharing)的能力。
Docker 具備多方之長(the best of both worlds)。Vagrant 只是個專注於硬體虛擬化的工具,反觀 Docker 更專注於程序隔離(isolation)。Vagrant 與 Docker 都致力達到的開發者的期望目標,它們創建互相隔離的應用運行環境,然而 Docker 以更好的效率與移植性做到這一點。
(待續…)
為什麼會看到廣告
13會員
64內容數
Where I go and what I get.
留言0
查看全部
發表第一個留言支持創作者!
Leon的沙龍 的其他內容
圖片來自 Docker (本文譯自〈Docker for PHP Developers〉) 哈囉!Docker Docker 是一個包含許多技術的概括性詞彙,它提供的工具可以幫助你把某個應用(application)的基礎架構(infrastructure)分離成數個邏輯模塊(容器),你可以只組合某
圖片來自 Vincent PONTIER (本文譯自〈Docker for PHP Developers〉) 數年以來我都用 Vagarant  管理本地的開發伺服器,根據 Vagrant 網站所述,Vagrant  是用於創建、組態輕量的(light-weight)、可重製的(reproducib
圖片來自 josemdelaa 本文試圖從眾多電腦廠商的電力方案中,找出最佳解。 首先,我們必須先思考,消費者要的是什麼,我們當然可以天馬行空的想著超大範圍的無線供電方案之類的夢想,不過從務實考量,在現有的科技水平下,以筆電這樣的行動應用,除了續航力,重量這檔事顯然也必須被納入考量,任何人都可以理解
本文已搬家,請點此前往最新版本。 不過,Linux 的疊床架屋式架構又再度表露,Preferred Applications、gnome-www-browser、x-www-browser 這三者根本就同樣目的的東西,不知道弄成三個設定是怎樣?!
圖片來自 timwesterhoff 今日在朋友分享給我的 buzz 中有一則〈如何將 NB 的無線網路變成可分享 Wi-Fi 的 AP 模式 (Ad-Hoc)〉,不過,其實這世界上還有更平易近人的做法,並且不限於透過單一界面,每一台 Mac 上的基本配備—WiFi、乙太網路 、藍牙,只要其中一種界
圖片來自 William Warby 一般來說,資料的備份策略從規模的小到大,我們可以有幾種選擇,如果只是小規模的、輕量的,通常是燒成備份光碟,操作方式也多是手動的,然而隨著年紀的增長  Orz,資料也跟著增長,當資料量大到某種規模,手動備份就變得沒效率且不實際,這時我們就需要專門的備份軟體來自動的
圖片來自 Docker (本文譯自〈Docker for PHP Developers〉) 哈囉!Docker Docker 是一個包含許多技術的概括性詞彙,它提供的工具可以幫助你把某個應用(application)的基礎架構(infrastructure)分離成數個邏輯模塊(容器),你可以只組合某
圖片來自 Vincent PONTIER (本文譯自〈Docker for PHP Developers〉) 數年以來我都用 Vagarant  管理本地的開發伺服器,根據 Vagrant 網站所述,Vagrant  是用於創建、組態輕量的(light-weight)、可重製的(reproducib
圖片來自 josemdelaa 本文試圖從眾多電腦廠商的電力方案中,找出最佳解。 首先,我們必須先思考,消費者要的是什麼,我們當然可以天馬行空的想著超大範圍的無線供電方案之類的夢想,不過從務實考量,在現有的科技水平下,以筆電這樣的行動應用,除了續航力,重量這檔事顯然也必須被納入考量,任何人都可以理解
本文已搬家,請點此前往最新版本。 不過,Linux 的疊床架屋式架構又再度表露,Preferred Applications、gnome-www-browser、x-www-browser 這三者根本就同樣目的的東西,不知道弄成三個設定是怎樣?!
圖片來自 timwesterhoff 今日在朋友分享給我的 buzz 中有一則〈如何將 NB 的無線網路變成可分享 Wi-Fi 的 AP 模式 (Ad-Hoc)〉,不過,其實這世界上還有更平易近人的做法,並且不限於透過單一界面,每一台 Mac 上的基本配備—WiFi、乙太網路 、藍牙,只要其中一種界
圖片來自 William Warby 一般來說,資料的備份策略從規模的小到大,我們可以有幾種選擇,如果只是小規模的、輕量的,通常是燒成備份光碟,操作方式也多是手動的,然而隨著年紀的增長  Orz,資料也跟著增長,當資料量大到某種規模,手動備份就變得沒效率且不實際,這時我們就需要專門的備份軟體來自動的
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
羅勒(Ocimum basilicum)是一種鮮綠色的地中海香草,不僅可以食用,還充滿了魔法的力量。雖然是香草,但可以像蔬菜一樣食用。羅勒容易種植,只需要充足的陽光和水就能成長,可使用於許多美味的菜餚中!除了其烹飪和藥用價值外,羅勒在巫術中也全能型好寶寶植物。以下是你可以用羅勒魔法來實現意圖的8
Thumbnail
加賀譯是一個跨國工作坊的計畫,強調地方的所有資訊都只是尋找自己內心願望的線索。工作坊分為三個階段,強調自我、實踐,以及共創。此外,文章中提及了工作坊的組織與分工、課程部份以及其中的核心價值。
Thumbnail
本篇文章將與你介紹在 Converkit 平臺創作電子報的經驗和談及即將改名為 Kit 的動向,並分享了知識變現的 24 種可能方式,包括教育資源、範本、設計、錄音和服務專案等,期待帶你打開知識創業的N種可能。
Thumbnail
打開手機,滑動左右解鎖,消費,注視,上下滑動閱讀新聞,永無止盡⋯⋯這是一般人的日常,也是網路閱讀成癮者的煉獄,如果把網路上的文字、圖片和影音都算作文本,現代人的閱讀量早已超過紙本,但你的理解力突飛猛進嗎?還是更迷惘焦慮呢?身為必須大量閱讀的文字工作者,分享一點在數位煉獄求生的個人經驗。
Thumbnail
日前有位學員想要上課,他是我看過印象最深刻的一位 因為…..他把我招生文件裡面的注意事項都看完了 對應的課程大綱、Q & A,都看過一次 他寫信問我,問了兩個問題: 第一個是他看完,但不清楚(有疑問)的地方。他要 Double-Check 第二個是詢問我的匯款帳號 我真的不懂 尤其是IT課程
Thumbnail
在設計機器學習相關產品與服務時,必須瞭解它和一般軟體開發的不同、以及過程中獨特的優先順序與需求。前一篇中探討了機器學習產品開發時,專案經理必須具有的基礎認識和挑戰,本文則延續討論相關的產品管理須知。
Thumbnail
為什麼管理機器學習(ML)產品比一般軟體困難?因為開發ML產品的不確定性和可變性更高;而一般軟體工程則是為機器編寫規則,原本就有高度的確定性。而ML系統可以自行學習,所以並不需要人來編寫規則。總之,「實驗」就是開發ML產品的關鍵。
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
羅勒(Ocimum basilicum)是一種鮮綠色的地中海香草,不僅可以食用,還充滿了魔法的力量。雖然是香草,但可以像蔬菜一樣食用。羅勒容易種植,只需要充足的陽光和水就能成長,可使用於許多美味的菜餚中!除了其烹飪和藥用價值外,羅勒在巫術中也全能型好寶寶植物。以下是你可以用羅勒魔法來實現意圖的8
Thumbnail
加賀譯是一個跨國工作坊的計畫,強調地方的所有資訊都只是尋找自己內心願望的線索。工作坊分為三個階段,強調自我、實踐,以及共創。此外,文章中提及了工作坊的組織與分工、課程部份以及其中的核心價值。
Thumbnail
本篇文章將與你介紹在 Converkit 平臺創作電子報的經驗和談及即將改名為 Kit 的動向,並分享了知識變現的 24 種可能方式,包括教育資源、範本、設計、錄音和服務專案等,期待帶你打開知識創業的N種可能。
Thumbnail
打開手機,滑動左右解鎖,消費,注視,上下滑動閱讀新聞,永無止盡⋯⋯這是一般人的日常,也是網路閱讀成癮者的煉獄,如果把網路上的文字、圖片和影音都算作文本,現代人的閱讀量早已超過紙本,但你的理解力突飛猛進嗎?還是更迷惘焦慮呢?身為必須大量閱讀的文字工作者,分享一點在數位煉獄求生的個人經驗。
Thumbnail
日前有位學員想要上課,他是我看過印象最深刻的一位 因為…..他把我招生文件裡面的注意事項都看完了 對應的課程大綱、Q & A,都看過一次 他寫信問我,問了兩個問題: 第一個是他看完,但不清楚(有疑問)的地方。他要 Double-Check 第二個是詢問我的匯款帳號 我真的不懂 尤其是IT課程
Thumbnail
在設計機器學習相關產品與服務時,必須瞭解它和一般軟體開發的不同、以及過程中獨特的優先順序與需求。前一篇中探討了機器學習產品開發時,專案經理必須具有的基礎認識和挑戰,本文則延續討論相關的產品管理須知。
Thumbnail
為什麼管理機器學習(ML)產品比一般軟體困難?因為開發ML產品的不確定性和可變性更高;而一般軟體工程則是為機器編寫規則,原本就有高度的確定性。而ML系統可以自行學習,所以並不需要人來編寫規則。總之,「實驗」就是開發ML產品的關鍵。