Docker技術簡介_第1頁
Docker技術簡介_第2頁
Docker技術簡介_第3頁
Docker技術簡介_第4頁
Docker技術簡介_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、1、Docker技術解決了什么問題?2、Docker之helloworld3、Docker技術基礎4、Docker重要概念5、Docker使用步驟及應用方向6、Docker下的開發(fā)部署流程DockerDocker基于容器技術的輕量級虛擬化解決方案Docker是容器引擎,把Linux的cgroup、namespace等容器底層技術進行封裝抽象(后面會介紹此兩種技術),為用戶提供了創(chuàng)建和管理容器的便捷界面(包括命令行和API)Docker 是一個開源項目,誕生于 2013 年初,基于 Google 公司推出的 Go 語言實現(xiàn)微軟,紅帽Linux,IBM,Oracle等主流IT廠商已經(jīng)在自己的產(chǎn)品里

2、增加對Docker的支持。Google 每周啟動超過20億個容器進行業(yè)務服務,于上個世紀90年代已經(jīng)開始大規(guī)模使用容器技術傳統(tǒng)的開發(fā)部署流程(僅包括純技術部分): 搭建開發(fā)環(huán)境安裝web容器安裝數(shù)據(jù)庫分配網(wǎng)絡開發(fā)測試編碼測試安裝web容器安裝數(shù)據(jù)庫分配網(wǎng)絡上線生產(chǎn)搭建開發(fā)環(huán)境安裝web容器安裝數(shù)據(jù)庫分配網(wǎng)絡開發(fā)測試編碼測試安裝web容器安裝數(shù)據(jù)庫分配網(wǎng)絡上線生產(chǎn)搭建開發(fā)環(huán)境安裝web容器安裝數(shù)據(jù)庫分配網(wǎng)絡。版本管理版本管理問題1、資源利用效率低2、單物理機多應用無法有效隔離(進程空間,cpu資源,磁盤)3、運維部署不便4、測試、版本管理復雜5、遷移成本高6、傳統(tǒng)虛擬機,空間占用大,啟動慢,管理

3、復雜。Docker-輕量級虛擬化容器技術1、秒級啟動,秒級停止,空間資源占用極少(幾M)2、實現(xiàn)進程級別的隔離3、可在普通服務器上建立上百個docker實例4、加快開發(fā)測試部署的速度5、簡化版本管理開發(fā)和運維的有效隔離一個IT系統(tǒng)應該包含如下幾個層次:應用程序運行時平臺(bin/framework/lib)操作系統(tǒng)硬件(基礎設施)開發(fā)人員的主要工作是應用程序的編碼、構建、測試和發(fā)布,涉及應用程序和運行時平臺這兩層。而運維人員的工作則涉及從硬件、操作系統(tǒng)到運行時平臺的安裝、配置、運行監(jiān)控、升級和優(yōu)化等工作。docker提供了一種運行時環(huán)境,隔離了上層應用于下層操作系統(tǒng)和硬件的關聯(lián),使得術業(yè)有專攻

4、docker之helloworld1、安裝docker 在ubuntu 14.04下 執(zhí)行一條命令即可安裝 apt-get install docker-io2、運行 docker run busybox /bin/echo HelloWorlddocker背后干了什么我們創(chuàng)建了一個容器它擁有:文件系統(tǒng)(基于busybox鏡像)網(wǎng)絡棧(具有私有網(wǎng)絡服務)進程空間自動安裝 docker會自動檢查本地是否有busybox鏡像(一個測試版本的linux系統(tǒng)),如果沒有則自動下載并啟動通過調(diào)用宿主機上的bash啟動進程,并打印 “Helloworld“Docker 技術基礎-NameSpace實現(xiàn)資源

5、隔離1、UTS: 主機名隔離2、IPC: 進程間通信隔離3、PID: 進程樹隔離4、NS: 掛載點隔離5、NET: 網(wǎng)絡接入,包括接口的隔離6、USER: 將本地的虛擬user-id映射到真實的user-idNameSpace-UTS隔離 初始主機名 創(chuàng)建一個容器并在容器內(nèi)設置新的主機名注意這里使用的是LinuxAPI 不是docker 執(zhí)行代碼,進入容器 檢查是否設置為新的主機名Docker的技術基礎-CGROUP 計算機資源使用上的隔離,通常我們叫做使用限額 Resource limitation: 限制資源使用,比如內(nèi)存使用上限以及文件系統(tǒng)的緩存限制。 Prioritization: 優(yōu)

6、先級控制,比如:CPU利用和磁盤IO吞吐。 Accounting: 一些審計或一些統(tǒng)計,主要目的是為了計費。 Control: 掛起進程,恢復執(zhí)行進程CGROUP-CPU使用限制 1、測試代碼 2、運行測試代碼,會將cpu全部占滿 3、創(chuàng)建Cgroup cpu限制文件 4、設置限額為20% 5、將進程放入cpu限額管理 6、cpu利用率會減少到20%以內(nèi)Docker的技術基礎-Union文件系統(tǒng)功能類似diff命令,通過分層的方式記錄文件的累積變化情況。例如 tomcat,oracle,weblogic鏡像都可以共享同一個Linux基礎鏡像,每一個鏡像保存的只是在基礎鏡像上他們修改的部分Doc

7、ker的鏡像可以非常多,但是每個都很小,而且加載啟動非???。docker的重要概念 鏡像(image) 容器(container) 數(shù)據(jù)卷(volumes) 鏈接(links) 倉庫(Repository)docker之鏡像 Docker 的鏡像類似虛擬機的快照,但是更輕量 例如:一個鏡像可以包含一個完整的 Linux 操作系統(tǒng)環(huán)境,里面僅安裝了 Tomcat或用戶需要的其它應用程序 鏡像可以用來創(chuàng)建容器docker之容器 等同于從快照中創(chuàng)建虛擬機 容器是從鏡像創(chuàng)建的運行實例。它可以被啟動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平臺。 可以把容器看做是一個簡易版的 Linux 環(huán)

8、境(包括root用戶權限、進程空間、用戶空間和網(wǎng)絡空間等)和運行在其中的應用程序。鏡像 #0Linux +tomcat容器 #1Linux + tomcat 容器 #2Linux + tomcat 容器 #2Linux + tomcat 從同一個鏡像啟動多個容器容器端口映射主機鏡像名稱:image:01鏡像ID:e7fig83jgf8Linux+tomcat鏡像名稱:image:02鏡像ID:v8fkfg8gkdLinux+oracle容器名稱:myapp1容器ID:44adg8d9mdfport:8080port:80容器名稱:myapp_db容器ID:35gif8jr9fgnhkfport

9、:1521port:1521容器名稱:myapp2容器ID:9gjd8jd9gkdh9gport:8081port:80數(shù)據(jù)卷數(shù)據(jù)卷是一個可供一個或多個容器使用的特殊目錄進程和數(shù)據(jù)的分離實際保存在容器之外,從而允許你在不影響數(shù)據(jù)的情況下銷毀、重建、修改、丟棄容器可用于數(shù)據(jù)持久化數(shù)據(jù)卷的使用,類似于 Linux 下對目錄或文件進行 mount。數(shù)據(jù)卷的共享, 可以在多個容器之間共享數(shù)據(jù)卷主機image:01Linux+tomcatimage:02Linux+oraclemyapp1 port:8080port:80volumes:/data/web/src/myapp/instance01/da

10、ta/default/volume01/soi-01myapp_db port:1521port:1521volumes:/appdata/var/log/myapp/instance02/data/default/volume02/soi-02app_dev port:8081port:80volumes:/web/src/db/home/imyapp/dev/mydata鏈接容器的連接(linking)系統(tǒng)是除了端口映射外,另一種跟容器中應用交互的方式在源和接收容器之間創(chuàng)建一個隧道,接收容器可以看到源容器指定的信息Docker 在兩個互聯(lián)的容器之間創(chuàng)建了一個安全隧道,而且不用映射它們的端口

11、到宿主主機上。從而避免了暴露關鍵系統(tǒng)(如數(shù)據(jù)庫)端口到外部網(wǎng)絡上.主機image:01Linux+tomcatimage:02Linux+oracleweb port:8080port:80volumes:/data/var/log/myapp/instance01/data/default/volume01/soi-01myapp_db dbapp:1521port:1521volumes:/appdata/var/log/myapp/instance02/data/default/volume02/soi-02app_dev port:8081port:80volumes:/db/home

12、/imyapp/dev/mydata這里實際上1521端口只有web容器和myapp_db容器是可見的,對其他容器是不可見的。倉庫及倉庫注冊服務器倉庫是集中存放鏡像文件的場所倉庫注冊服務器上往往存放著多個倉庫,每個倉庫中又包含了多個鏡像,每個鏡像有不同的標簽倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形式push 鏡像到倉庫,從倉庫pull下鏡像倉庫注冊服務Docker倉庫注冊服務API認證與授權倉庫群存儲鏡像01鏡像02.Loggingreporting通知發(fā)現(xiàn)搭建簡易私有倉庫 1、在docker中啟動一個注冊服務 2、列出當前倉庫中的鏡像 3、重新標記hello-wor

13、ld鏡像 4、列出新的鏡像5、將新鏡像推送到私有倉庫6、瀏覽器列出私有倉庫中的鏡像7、從當前環(huán)境中刪除hello-mine 鏡像8、嘗試啟動hello-mine鏡像 9、嘗試從私有倉庫下載鏡像 以上步驟實現(xiàn)了一個用于測試和開發(fā)的簡易私有倉庫,但是真正的使用環(huán)境,要考慮存儲,權限控制,倉庫日志,快速緩存等重要的問題,具體請看docker手冊docker使用步驟 創(chuàng)建鏡像 創(chuàng)建容器 在需要時暴露端口,創(chuàng)造卷 通過鏈接將幾個容器連接在一起 還有更高級的應用,比如創(chuàng)建網(wǎng)橋自行組網(wǎng)等,請參考手冊Docker-應用方向1、 簡化配置 應用配置能夠無縫運行在任何平臺,將應用環(huán)境和底層環(huán)境實現(xiàn)了解耦2、 代碼管道化管理 代碼從開發(fā)者的機器到生產(chǎn)環(huán)境機器進行管道化管理,能夠平滑遷移。3、 應用隔離 多個應用服務部署在多個Docker中,實現(xiàn)應用之間的解耦4、 服務合并 合并多個服務,減少機器占用Docker-應用方向5、快速部署 快速的啟動速度,極小空間占用6、開發(fā)人員的生產(chǎn)化 能夠在單機上搭建分布式集群服務,用以測試在真正生產(chǎn)環(huán)境下的代碼以Docker為單位的開發(fā)部署流程設計Docker倉庫

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論