給 PHP 開發者的 Docker 文件(二)
(本文譯自〈Docker for PHP Developers〉)
哈囉!Docker
Docker 是一個包含許多技術的概括性詞彙,它提供的工具可以幫助你把某個應用(application)的基礎架構(infrastructure)分離成數個邏輯模塊(容器),你可以只組合某些必要的模塊去把應用的基礎架構建構成可移植(portable)的,這樣的基礎架構可以於開發(development)、上線(staging)、生產(production)環境中遷移。
什麼是 Docker 容器(Container)?
一個容器指的是一個大型應用內的某個單一的服務。舉例來說,假設我們正在建構一個 PHP 應用,那麼我們需要一個網頁伺服器(如 nginx);我們也需要一個應用伺服器(如 PHP-FPM);我們還需要一個資料庫伺服器(如 MySQL)。也就是說我們的應用需要三個這樣的獨立的服務:網頁伺服器、應用伺服器、資料庫伺服器,這三樣服務都可以被分離成各自專屬的 Docker 容器,只要我們把這三個容器連結起來,我們就有了一個完整的應用。
什麼是 Docker 映像(Image)?
把某個應用分成數個容器看來像是吃力不討好的工作,至少我以往是這麼認為的,不過實際上並不然,首先,容器實際上是映像的實例(instance),若把 Docker 的映像想像成 PHP 的類別(class),就像 PHP 類別可以讓我們實例化(instantiate)出許多獨立的物件(object)一樣,Docker 的映像也可以實例化出許多獨立的 Docker 容器。例如我們可以拿一個 PHP-FPM Docker 映像去為我們的每個應用實例化出它們的獨立的 PHP-FPM 容器。
我們也可以自製 Docker 映像,不過還是從 Docker Hub 去找適合的 Docker 映像會比較簡單些,像是我們會抓 sameersbn/mysql 這個 Docker 映像來建立 MySQL 資料庫容器。如果別人已經建好了能幫我們解決問題的 Docker 映像,為什麼還要重新發明輪子呢
(待續…)
喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!