最近Python程序員提到最多的一個(gè)框架就是docker了,對(duì)于一些新手來(lái)說(shuō)還不知道他的存在,這里小千就用幾期文章給大家介紹一下這個(gè)docker和使用教程,喜歡的話記得關(guān)注一下。
1.什么是Docker?
Docker時(shí)Docker.Lnc公司開源的一個(gè)基于LXC技術(shù)之上搭建的Container容器引擎,源代碼托管在Github上,基于Go語(yǔ)言并遵從Apache2.0協(xié)議開源。Docker將應(yīng)用程序與該程序的依賴,打包在一個(gè)文件里面。運(yùn)行這個(gè)文件,就會(huì)生成一個(gè)虛擬容器。程序在這個(gè)虛擬容器里運(yùn)行,就好像在真實(shí)的物理機(jī)上運(yùn)行一樣。有了Docker,就不用擔(dān)心環(huán)境問題。
總體來(lái)說(shuō),Docker的接口相當(dāng)簡(jiǎn)單,用戶可以方便地創(chuàng)建和使用容器,把自己的應(yīng)用放入容器。容器還可以進(jìn)行版本管理、復(fù)制、分享、修改,就像管理普通的代碼一樣。容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口(類似 iPhone 的 app),更重要的是容器性能開銷極低。
2.Docker的設(shè)計(jì)理念和概念
docker設(shè)想是交付運(yùn)行環(huán)境如同海運(yùn),OS如同一個(gè)貨輪,每一個(gè)在OS基礎(chǔ)上的軟件都如同一個(gè)集裝箱,用戶可以通過(guò)標(biāo)準(zhǔn)化手段自由組裝運(yùn)行環(huán)境,同時(shí)集裝箱的內(nèi)容可以由用戶自定義,也可以由專業(yè)人員制造。這樣,交付一個(gè)軟件,就是一系列標(biāo)準(zhǔn)化組件的集合的交付,如同樂高積木,用戶只需要選擇合適的積木組合,并且在最頂端署上自己的名字(最后一個(gè)標(biāo)準(zhǔn)化組件是用戶的app)。這也就是基于docker的PaaS產(chǎn)品的原型。
所以Docker的主要目標(biāo)是“Build,Ship and Run Any App,Anywhere”,也就是通過(guò)對(duì)應(yīng)用組件的封裝、分發(fā)、部署、運(yùn)行等生命周期的管理,使用戶的APP(可以是一個(gè)WEB應(yīng)用或數(shù)據(jù)庫(kù)應(yīng)用等等)及其運(yùn)行環(huán)境能夠做到“一次封裝,到處運(yùn)行”。
Docker是開發(fā)人員和系統(tǒng)管理員使用容器開發(fā)、部署和運(yùn)行應(yīng)用程序的平臺(tái)。使用Linux容器來(lái)部署應(yīng)用程序稱為集裝箱化。使用docker輕松部署應(yīng)用程序。目前,Docker 從 17.03 版本之后分為 CE(Community Edition: 社區(qū)版) 和 EE(Enterprise Edition: 企業(yè)版),我們用社區(qū)版就可以了。
3.Docker的組成部分
一個(gè)完整的Docker有以下幾個(gè)部分組成:DockerClient客戶端、Docker Daemon守護(hù)進(jìn)程、Docker Image鏡像、DockerContainer容器。
通過(guò)運(yùn)行images啟動(dòng)容器,一個(gè)images是一個(gè)可執(zhí)行的包,其中包括運(yùn)行應(yīng)用程序所需要的所有內(nèi)容-代碼,運(yùn)行時(shí),庫(kù)、環(huán)境變量和配置文件。容器時(shí)images運(yùn)行時(shí)示例-當(dāng)被執(zhí)行時(shí)(即,images狀態(tài),或者用戶進(jìn)程)在內(nèi)存中,可以使用命令查看正在運(yùn)行容器的列表docker ps,就像在Linux中一樣。
4.容器虛擬化和用途
Docker的主要用途,目前有三大類:
提供了一次性的環(huán)境:比如,本地測(cè)試他人的軟件、持續(xù)集成的時(shí)候提供單元測(cè)試和構(gòu)建的環(huán)境。
提供彈性的云服務(wù):因?yàn)镈ocker容器可以隨開隨關(guān),很適合動(dòng)態(tài)擴(kuò)容和所容。
組建微服務(wù)架構(gòu):通過(guò)多個(gè)容器,一臺(tái)機(jī)器可以跑多個(gè)服務(wù),因此在本機(jī)就可以模擬出微服務(wù)架構(gòu)。
5. Docker的使用場(chǎng)景
使用Docker容器開發(fā)、測(cè)試、部署服務(wù):因?yàn)镈ocker本身非常輕量化,所以本地開發(fā)人員可以構(gòu)建、運(yùn)行并分享Docker容器。容器可以在開發(fā)環(huán)境中創(chuàng)建,然后再提交到測(cè)試,最終進(jìn)入生產(chǎn)環(huán)境。
創(chuàng)建隔離的運(yùn)行環(huán)境:在很多企業(yè)應(yīng)用中,同一服務(wù)的不同版本可能服務(wù)于不同的用戶,那么使用Docker非常容易創(chuàng)建不同的生成環(huán)境來(lái)運(yùn)行不同的服務(wù)。
搭建測(cè)試環(huán)境:由于Docker的輕量化,所以開發(fā)者很容易利用Docker在本地搭建測(cè)試環(huán)境,用來(lái)測(cè)試程序在不用系統(tǒng)下的兼容性;甚至搭建集群的部署測(cè)試。
構(gòu)建多用戶的平臺(tái)即服務(wù)(PaaS)基礎(chǔ)設(shè)施。
提供軟件即服務(wù)(SaaS)應(yīng)用程序。
高性能、超大規(guī)模的宿主機(jī)部署。
以上就是關(guān)于Docker的一些基礎(chǔ)介紹了,下一期我們給大家介紹Docker的安裝和常用概念,千萬(wàn)不要錯(cuò)過(guò)了。
最后如果同學(xué)對(duì)Python培訓(xùn)課程感興趣的話,不妨來(lái)千鋒Python培訓(xùn)班了解一下我們的Python培訓(xùn)課程,更有免費(fèi)的Python學(xué)習(xí)資料可以領(lǐng)取,趕緊來(lái)咨詢一下吧!