亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長(zhǎng)資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    超詳細(xì)分析php docker的原理及作用

    超詳細(xì)分析php docker的原理及作用

    一句話總結(jié)

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

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

    1、docker的好處?

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

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

    1-3、內(nèi)存利用:在服務(wù)器負(fù)載方面,如果你單獨(dú)開(kāi)一個(gè)虛擬機(jī),那么虛擬機(jī)會(huì)占用空閑內(nèi)存的,docker部署的話,這些內(nèi)存就會(huì)利用起來(lái)。

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

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

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

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

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

    2-3.在服務(wù)器負(fù)載方面,如果你單獨(dú)開(kāi)一個(gè)虛擬機(jī),那么虛擬機(jī)會(huì)占用空閑內(nèi)存的,docker部署的話,這些內(nèi)存就會(huì)利用起來(lái)。

    總之docker就是集裝箱原理。

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

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

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

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

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

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

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

    4、嘗試新軟件

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

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

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

    5、學(xué)習(xí)linux腳本

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

    6、更好的利用資源

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

    7、為微服務(wù)定制

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

    8、在云服務(wù)提供商之間移植

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

    9、API

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

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)