Docker入门简介
Docker的概念
什么是Docker?
Docker是一個(gè)開(kāi)源平臺(tái),包含:容器引擎和Docker Hub注冊(cè)服務(wù)器
Docker容器引擎:可以將開(kāi)發(fā)者打包他們的應(yīng)用和依賴(lài)包到一個(gè)可一直的容器中,然后將其發(fā)布到任何流行的Linux機(jī)器上。
Docker Hub 注冊(cè)服務(wù)器:用戶(hù)可以該注冊(cè)服務(wù)器上創(chuàng)建自己的鏡像庫(kù)來(lái)存儲(chǔ)、管理和分享鏡像。利用Docker,可以實(shí)現(xiàn)軟件一次配置,處處運(yùn)行
RedHat從RHEL6.5開(kāi)始集成對(duì)Docker的支持。
容器與虛擬機(jī)
Docker是容器的一種,容器是一種輕量級(jí)的虛擬技術(shù),重量級(jí)的則是虛擬機(jī),例如VMware,VirtualBox等
容器與虛擬機(jī)的對(duì)比
| ? | 容器 | 虛擬機(jī) |
| 相同點(diǎn) | 都可以在不同的主機(jī)之間遷移 都具備root權(quán)限 都可以遠(yuǎn)程控制 都有備份,回滾操作 | |
| 操作系統(tǒng) | 在性能上有優(yōu)勢(shì),能夠輕易的同時(shí)運(yùn)行多個(gè)操作系統(tǒng) | 可以安裝任何操作系統(tǒng),性能不急容器 |
| 優(yōu)點(diǎn) | 更為高效,集中。一個(gè)硬件節(jié)點(diǎn)可以運(yùn)行數(shù)以百計(jì)的容器,非常節(jié)省資源。Qos會(huì)盡量滿(mǎn)足,但不保證一定滿(mǎn)足,內(nèi)核由提供者升級(jí),服務(wù)由服務(wù)器提供者管理 | 對(duì)操作系統(tǒng)具有絕對(duì)的權(quán)限,對(duì)系統(tǒng)版本和升級(jí)具有完全管理權(quán)限。具有一整套的資源:CPU,RAM和磁盤(pán),QoS是具有保證的。每一個(gè)操作虛擬機(jī)像一個(gè)真實(shí)的物理機(jī)一樣,可以實(shí)現(xiàn)不同的操作系統(tǒng)同時(shí)運(yùn)行在同一個(gè)物理節(jié)點(diǎn)上。 |
| 資源管理 | 彈性的資源分配:資源可以在沒(méi)有關(guān)閉容器的情況下添加,數(shù)據(jù)卷也無(wú)需重新分配大小(有些服務(wù)的容器需要重啟) | 虛擬機(jī)需要重啟,虛擬機(jī)里的操作系統(tǒng)需要處理新加入的資源,例如添加一塊磁盤(pán),則需要重新分區(qū)等 |
| 遠(yuǎn)程管理 | 根據(jù)操作系統(tǒng)的不同,會(huì)通過(guò)shell或者遠(yuǎn)程桌面進(jìn)行,前提是容器內(nèi)的操作系統(tǒng)已經(jīng)啟動(dòng) | 遠(yuǎn)程控制由虛擬化平臺(tái)提供,可以在虛擬機(jī)啟動(dòng)之前連接。所以可以安裝系統(tǒng) |
| 缺點(diǎn) | 對(duì)內(nèi)核沒(méi)有控制權(quán)限,只有容器的提供者具備升級(jí)權(quán)限。只有一個(gè)內(nèi)核運(yùn)行在物理節(jié)點(diǎn)上,幾乎不能實(shí)現(xiàn)不同的操作系統(tǒng)混合。容器提供者一般僅提供少數(shù)的幾款操作系統(tǒng) | 每一臺(tái)虛擬機(jī)具有更大的負(fù)載,耗費(fèi)更多的資源,用于需要全權(quán)維護(hù)和管理。一臺(tái)物理機(jī)上能夠運(yùn)行的虛擬機(jī)也非常有限 |
| 配置 | 快速,秒級(jí)即可準(zhǔn)備好,由容器提供者處理 | 配置時(shí)間長(zhǎng),從幾分鐘到幾小時(shí),具體取決于操作系統(tǒng),需要自行安裝操作系統(tǒng) |
| 啟動(dòng)時(shí)間 | 秒級(jí) | 分鐘級(jí) |
| 硬盤(pán)使用 | MB | GB |
| 性能 | 接近原生態(tài) | 若于原生態(tài) |
| 系統(tǒng)支持量 | 單機(jī)支持上千個(gè)容器 | 一般不多于幾十個(gè) |
| ? | ? | ? |
Docker的應(yīng)用場(chǎng)景
Docker幾種典型的應(yīng)用場(chǎng)景
- 加速本地開(kāi)發(fā),通過(guò)Docker能夠快速搭建好開(kāi)發(fā)和運(yùn)行環(huán)境,并且該環(huán)境可以直接傳遞給測(cè)試和產(chǎn)品部署
- 自動(dòng)打包和部署應(yīng)用
- 創(chuàng)建輕量、私有的PaaS環(huán)境
- 自動(dòng)化測(cè)試和持續(xù)集成/部署
- 部署并擴(kuò)展Web應(yīng)用、數(shù)據(jù)庫(kù)和后端服務(wù)器
- 創(chuàng)建安全沙盒子
- 輕量級(jí)桌面虛擬化
Docker的組件
Docker采用的是C/S架構(gòu)
Docker客戶(hù)端,即Docker可執(zhí)行程序,可以通過(guò)命令和API的形式與Docker守護(hù)程序進(jìn)行通信,Docker守護(hù)程序提供Docker服務(wù)
Docker包含三大核心組件:鏡像、容器和庫(kù)
鏡像:一個(gè)只讀的靜態(tài)模板。保存著容器需要的環(huán)境和應(yīng)用的執(zhí)行代碼,可以把鏡像看成容器的代碼。當(dāng)代碼運(yùn)行起來(lái)后就成了容器。鏡像采用分層機(jī)制,每個(gè)鏡像都是只讀的,但是可以將寫(xiě)數(shù)據(jù)的層通過(guò)聯(lián)合文件系統(tǒng)附加在原有鏡像之上,這種增量式修改使得鏡像非常容易存儲(chǔ)、傳輸和更新。
容器:是一個(gè)運(yùn)行時(shí)環(huán)境,它是一個(gè)鏡像的運(yùn)行狀態(tài),相對(duì)于靜態(tài)的鏡像而言。容器是鏡像執(zhí)行時(shí)的動(dòng)態(tài)表現(xiàn)。
庫(kù):Docker采用注冊(cè)服務(wù)器來(lái)存儲(chǔ)和共享用戶(hù)的鏡像,庫(kù)是某個(gè)特定用戶(hù)存儲(chǔ)鏡像的目錄。
AUFS
Docker利用AUFS來(lái)實(shí)現(xiàn)對(duì)容器的快速更新。
AUFS是一種支持將不同目錄掛載到同一個(gè)虛擬文件系統(tǒng)下的文件系統(tǒng),支持對(duì)每個(gè)目錄的讀寫(xiě)權(quán)限管理。另外,AUFS具有層的概念,每一次修改都是在已有的只寫(xiě)層進(jìn)行增量修改,修改內(nèi)容將形成新的文件層,而不影響原有層。
Docker的安裝
安裝環(huán)境:
內(nèi)核版本
[root@docker ~]# uname -r 2.6.32-573.el6.x86_64 [root@docker ~]#系統(tǒng)版本
[root@docker ~]# cat /etc/redhat-release CentOS release 6.7 (Final) [root@docker ~]#注意:如果使用RedHat linux或者Centos linux ,需要時(shí)6.5以上的版本以及內(nèi)核版本在2.6.32-431以上
安裝EPEL的命令
rpm -Uvh http://mirror.math.princeton.edu/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm安裝Docker
yum install docker-io –y啟動(dòng)Docker后臺(tái)
./etc/init.d/docker start確認(rèn)Doocker安裝成功
[root@docker ~]# docker info Containers: 0 Images: 0 Storage Driver: devicemapperPool Name: docker-8:3-3016327-poolPool Blocksize: 65.54 kBBacking Filesystem: extfsData file: /dev/loop0Metadata file: /dev/loop1Data Space Used: 305.7 MBData Space Total: 107.4 GBData Space Available: 78.07 GBMetadata Space Used: 729.1 kBMetadata Space Total: 2.147 GBMetadata Space Available: 2.147 GBUdev Sync Supported: trueDeferred Removal Enabled: falseData loop file: /var/lib/docker/devicemapper/devicemapper/dataMetadata loop file: /var/lib/docker/devicemapper/devicemapper/metadataLibrary Version: 1.02.95-RHEL6 (2015-04-15) Execution Driver: native-0.2 Logging Driver: json-file Kernel Version: 2.6.32-573.el6.x86_64 Operating System: <unknown> CPUs: 1 Total Memory: 1.826 GiB Name: docker ID: ZRF4:2E26:P3LZ:TK37:5HJG:5VP3:HUVQ:NSMR:J6BG:WMWO:YEDJ:MDGZ?
轉(zhuǎn)載于:https://www.cnblogs.com/zhaof/p/6133615.html
總結(jié)
以上是生活随笔為你收集整理的Docker入门简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: (HDU)1091 --A+B for
- 下一篇: 学习游戏渲染(Shader)的用处