溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php docker的原理及作用

發(fā)布時間:2020-05-12 15:26:23 來源:億速云 閱讀:189 作者:Leah 欄目:編程語言

今天小編就為大家?guī)硪黄P于php docker的原理及作用的文章。小編覺得挺不錯的,為此分享給大家做個參考。一起跟隨小編過來看看吧。

php docker的原理及作用

一句話總結

Docker就是集裝箱原理:比如隔離:Docker 提供了一組應用打包、傳輸和部署的方法,以便你能更好地在容器內(nèi)運行任何應用。Docker 是一個便攜的應用容器

Docker快速整出各種環(huán)境:比如Node.js 網(wǎng)站服務器,API 服務器,數(shù)據(jù)庫等

1、docker的好處?

1-1、快速構建隔離環(huán)境:不同的應用程序可能會有不同的應用環(huán)境,比如.net開發(fā)的網(wǎng)站和php開發(fā)的網(wǎng)站依賴的軟件就不一樣,如果把他們依賴的軟件都安裝在一個服務器上就要調(diào)試很久,而且很麻煩,還會造成一些沖突。比如IIS和Apache訪問端口沖突。這個時候你就要隔離.net開發(fā)的網(wǎng)站和php開發(fā)的網(wǎng)站。常規(guī)來講,我們可以在服務器上創(chuàng)建不同的虛擬機在不同的虛擬機上放置不同的應用,但是虛擬機開銷比較高。docker可以實現(xiàn)虛擬機隔離應用環(huán)境的功能,并且開銷比虛擬機小,小就意味著省錢了。

1-2、封裝開發(fā)環(huán)境,解決環(huán)境版本問題:你開發(fā)軟件的時候用的是Ubuntu,但是運維管理的都是centos,運維在把你的軟件從開發(fā)環(huán)境轉移到生產(chǎn)環(huán)境的時候就會遇到一些Ubuntu轉centos的問題,比如:有個特殊版本的數(shù)據(jù)庫,只有Ubuntu支持,centos不支持,在轉移的過程當中運維就得想辦法解決這樣的問題。這時候要是有docker你就可以把開發(fā)環(huán)境直接封裝轉移給運維,運維直接部署你給他的docker就可以了。而且部署速度快。

1-3、內(nèi)存利用:在服務器負載方面,如果你單獨開一個虛擬機,那么虛擬機會占用空閑內(nèi)存的,docker部署的話,這些內(nèi)存就會利用起來。

2、docker是什么?docker可以做什么?

Docker的思想來自于集裝箱,集裝箱解決了什么問題?在一艘大船上,可以把貨物規(guī)整的擺放起來。并且各種各樣的貨物被集裝箱標準化了,集裝箱和集裝箱之間不會互相影響。那么我就不需要專門運送水果的船和專門運送化學品的船了。只要這些貨物在集裝箱里封裝的好好的,那我就可以用一艘大船把他們都運走。

docker就是類似的理念?,F(xiàn)在都流行云計算了,云計算就好比大貨輪。docker就是集裝箱。

2-1.不同的應用程序可能會有不同的應用環(huán)境,比如.net開發(fā)的網(wǎng)站和php開發(fā)的網(wǎng)站依賴的軟件就不一樣,如果把他們依賴的軟件都安裝在一個服務器上就要調(diào)試很久,而且很麻煩,還會造成一些沖突。比如IIS和Apache訪問端口沖突。這個時候你就要隔離.net開發(fā)的網(wǎng)站和php開發(fā)的網(wǎng)站。常規(guī)來講,我們可以在服務器上創(chuàng)建不同的虛擬機在不同的虛擬機上放置不同的應用,但是虛擬機開銷比較高。docker可以實現(xiàn)虛擬機隔離應用環(huán)境的功能,并且開銷比虛擬機小,小就意味著省錢了。

2-2.你開發(fā)軟件的時候用的是Ubuntu,但是運維管理的都是centos,運維在把你的軟件從開發(fā)環(huán)境轉移到生產(chǎn)環(huán)境的時候就會遇到一些Ubuntu轉centos的問題,比如:有個特殊版本的數(shù)據(jù)庫,只有Ubuntu支持,centos不支持,在轉移的過程當中運維就得想辦法解決這樣的問題。這時候要是有docker你就可以把開發(fā)環(huán)境直接封裝轉移給運維,運維直接部署你給他的docker就可以了。而且部署速度快。

2-3.在服務器負載方面,如果你單獨開一個虛擬機,那么虛擬機會占用空閑內(nèi)存的,docker部署的話,這些內(nèi)存就會利用起來。

總之docker就是集裝箱原理。

3、開發(fā)者可以使用docker做什么?

Docker 如今贏得了許多關注,很多人覺得盛名之下其實難副,因為他們?nèi)匀桓悴磺?Docker 和普通開發(fā)者到底有什么關系。許多開發(fā)者覺得 Docker 離自己很遠,Docker 是生產(chǎn)環(huán)境中的工具,和自己無關。我也是花了很長時間才想清楚作為普通開發(fā)人員如何在自己的開發(fā)中使用 Docker。坦率地說,我仍處在學習的過程中。

這篇文章提供了一個 Docker 用例列表,我希望它能更好地幫助你理解 Docker 并引發(fā)你的思考。本文只是描述 Docker 在普通開發(fā)者日常的應用,并不提供完整的解決方案。

在介紹用例之前,我希望你能先記住這句話:“Docker 是一個便攜的應用容器”。你可以不知道 Docker 所說的的“便攜式容器”到底是什么意思,但是你必須清楚 Docker 在日常中能帶來非常大的效率提升。

當你需要在容器內(nèi)運行自己的應用(當然可以是任何應用),Docker 都提供了一個基礎系統(tǒng)鏡像作為運行應用時的基礎系統(tǒng)。也就是說,只要是 Linux 系統(tǒng)上的應用都可以運行在 Docker 中。

可以在 Docker 里面運行數(shù)據(jù)庫嗎?當然可以。
可以在 Docker 里面運行 Node.js 網(wǎng)站服務器嗎?當然可以。
可以在 Docker 里面運行 API 服務器嗎?當然可以。

Docker 并不在乎你的應用程序是什么、做什么,Docker 提供了一組應用打包、傳輸和部署的方法,以便你能更好地在容器內(nèi)運行任何應用。

4、嘗試新軟件

對開發(fā)者而言,每天會催生出的各式各樣的新技術都需要嘗試,然而開發(fā)者卻不太可能為他們一一搭建好環(huán)境并進行測試。時間非常寶貴,正是得益于 Docker,讓我們有可能在一條或者幾條命令內(nèi)就搭建完環(huán)境。Docker 有一個傻瓜化的獲取軟件的方法,Docker 后臺會自動獲得環(huán)境鏡像并且運行環(huán)境。
并不僅僅是新技術環(huán)境搭建用得到 Docker。如果你想快速在你的筆記本上運行一個 MySQL 數(shù)據(jù)庫,或者一個 Redis 消息隊列,那么使用 Docker 便可以非常容易地做到。例如 Docker 只需要一條命令便可以運行 MySQL 數(shù)據(jù)庫:

docker run -d -p 3306:3306 tutum/mysql。

譯者注:雖然使用命令也能非??斓匕惭b MySQL 數(shù)據(jù)庫,但是當用到最新的技術或者非常復雜的技術時,使用 Docker 便會是個非常好的選擇,例如 Gitlab,普通用戶大概需要一天的時間去搭建 Gitlab 平臺,而 Docker 則只需要一條命令。

5、學習linux腳本

當然這個原因看起來可能很奇怪,但是對不不熟悉 Linux 操作系統(tǒng)和 Shell 腳本的人來說,確實是一個好機會。即便本文并不是在講 Linux,Linux 的重要度仍然不言而喻。如果你用的是 Windows,那么我給你一個建議:從云主機提供商那兒租用一臺云主機:我推薦使用 CoreOS 系統(tǒng)的云主機。雖然這樣并不會讓你成為專業(yè)的 Linux 運維,但是可以讓你快速地學到 Linux 基礎知識,愛上命令行操作,并且慢慢開始熟悉和欣賞 Linux。

6、更好的利用資源

虛擬機的粒度是“虛擬出的機器”,而 Docker 的粒度則是“被限制的應用”,相比較而言 Docker 的內(nèi)存占用更少,更加輕量級。
對我來說這是 Docker 的一個優(yōu)勢:因為我經(jīng)常在自己電腦中運行多個 Docker 應用,使用 Docker 比使用虛擬機更加簡單,方便,粒度更細,也能持續(xù)地跟蹤容器狀態(tài)。

7、為微服務定制

如果你一直在關注科技新聞的話,那么你應該聽說過“微服務(Microservices)”的概念。Docker 可以很好地和微服務結合起來。從概念上來說,一個微服務便是一個提供一整套應用程序的部分功能,Docker 便可以在開發(fā)、測試和部署過程中一直充當微服務的容器。甚至生產(chǎn)環(huán)境也可以在 Docker 中部署微服務。

8、在云服務提供商之間移植

大多數(shù)的云主機提供商已經(jīng)全面支持 Docker。對于開發(fā)人員來說,這表示你可以很方便地切換云服務提供商,當然也可以很方便地將你本地的開發(fā)環(huán)境移動到云主機上,不需要本地上配置一次運行環(huán)境、在云主機上還配置一次運行環(huán)境。全面部署 Docker (Docker here and Docker there) 作為標準運行環(huán)境可以極大地減輕應用上線時的工作量和產(chǎn)生 BUG。

9、API

API 是應用之間的粘合劑,一個合格開發(fā)者肯定使用過別人提供的 REST API,或者自己開發(fā)過 REST API。需要指出的是,無論是客戶端還是 API 提供端,在開發(fā)之前都需要先定義一組公共的 API 接口,寫成文檔,然后才能進行編碼。如果服務端和客戶端是共同開發(fā)的話,那么服務端通常會先實現(xiàn)能返回固定字符串的 API 接口,在以后的開發(fā)中再慢慢去實現(xiàn) API 的功能。
雖然有人會認為在這里 Docker 被濫用了,完全可以用 sample.json 這種文件去實現(xiàn)虛擬 API,但是下面有個實例可以更好地解決前后端分離開發(fā)時的 API 問題。
為了更好地解釋我的意思,給大家提供一個實例:JSON Server,一個用于提供 JSON 數(shù)據(jù)的 REST API。使用過這個容器的人就會知道,既然有這么好用的 Docker JSON Server,我們沒有理由不用 Docker。

以上就是php docker的原理及作用的詳細內(nèi)容了,看完之后是否有所收獲呢?如果想了解更多相關內(nèi)容,歡迎關注億速云行業(yè)資訊!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI