Docker技術(shù)專題講座幻燈片_第1頁(yè)
Docker技術(shù)專題講座幻燈片_第2頁(yè)
Docker技術(shù)專題講座幻燈片_第3頁(yè)
Docker技術(shù)專題講座幻燈片_第4頁(yè)
Docker技術(shù)專題講座幻燈片_第5頁(yè)
已閱讀5頁(yè),還剩32頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Docker技術(shù)專題講座,技術(shù)原理 環(huán)境搭建 應(yīng)用實(shí)例,1,簡(jiǎn)介,Docker的英文本意是“搬運(yùn)工”,在程序員的世界里,Docker搬運(yùn)的是集裝箱(Container),集裝箱里裝的是任意類型的App,開發(fā)者通過Docker可以將App變成一種標(biāo)準(zhǔn)化的、可移植的、自管理的組件,可以在任何主流系統(tǒng)中開發(fā)、調(diào)試和運(yùn)行。最重要的是,它不依賴于任何語言、框架或系統(tǒng)。 目標(biāo)是實(shí)現(xiàn)輕量級(jí)的操作系統(tǒng)虛擬化解決方案 基礎(chǔ):Linux 容器( LXC) Go 語言實(shí)現(xiàn) Apache 2.0 協(xié)議 GitHub 上進(jìn)行維護(hù),2,對(duì)比傳統(tǒng)虛擬機(jī),3,對(duì)比虛擬機(jī),4,Docker應(yīng)用場(chǎng)景,web應(yīng)用的自動(dòng)化打包和發(fā)布

2、 自動(dòng)化測(cè)試和持續(xù)集成、 發(fā)布 在服務(wù)型環(huán)境中部署和調(diào)整數(shù)據(jù)庫(kù)或其他的后臺(tái)應(yīng)用 從頭編譯或者擴(kuò)展現(xiàn)有的OpenShift或Cloud Foundry平臺(tái)來搭建自己的PaaS環(huán)境。,5,Docker 帶來的好處,6,安裝,安裝 Docker 所需條件:需要 64 位架構(gòu)的系統(tǒng)和 Linux 3.10 內(nèi)核或更高版本。 Docker有很多種安裝的選擇,推薦在Ubuntu下面安裝,因?yàn)閐ocker是在Ubuntu下面開發(fā)的,安裝包測(cè)試比較充分,可以保證軟件包的可用性。 添加 Docker 的官方 apt 軟件源 /etc/apt/sources.list.d/docker.list deb http

3、s://repo ubuntu-trusty main 添加成功后,更新 apt 軟件包緩存 $ sudo apt-get update 安裝 Docker $ sudo apt-get install -y docker-engine,7,Docker的Hello World,啟動(dòng)docker后臺(tái)Daemon: $ sudo systemctl start docker 跑我們第一個(gè)Hello World容器: $ sudo docker run -i -t fedora /bin/echo hello world hello world 可以看到在

4、運(yùn)行命令行后的下一行會(huì)打印出經(jīng)典的Hello World字符串。,8,3個(gè)內(nèi)部組件,Docker Images Docker image 是 Docker container 最基本的模板。image 通過容器使系統(tǒng)和應(yīng)用易于安裝,Docker image 是用來運(yùn)行的容器,你可以在這里 images (多種操作系統(tǒng)和軟件已經(jīng)被安裝好了的 Docker)。 Docker Container Docker 容器(Docker Container)是一個(gè) Image,在運(yùn)行的 Docker image 上讀取和寫入。Docker 是一個(gè)聯(lián)合的文件系統(tǒng)作為容器后臺(tái),容器的任何變化,都將被保存在一個(gè)基

5、本 image 新的層上。我們安裝應(yīng)用程序的層就是容器。每個(gè)在主機(jī)上運(yùn)行的容器都是獨(dú)立的,因此,提供了一個(gè)安全的應(yīng)用平臺(tái)。 Docker Registry Docker registry 是為 Docker images 提供的庫(kù)。它提供了公共和私有庫(kù)。公共 Docker 庫(kù)被叫做 Docker Hub。這里我們能夠上傳 push 和 pull 我們自己的 images。,9,10,Docker架構(gòu)圖,11,Docker總架構(gòu)圖,12,Docker運(yùn)行案例分析-docker pull,13,Docker運(yùn)行案例分析-docker run,14,Docker 鏡像,每個(gè)鏡像都由很多層次構(gòu)成,Do

6、cker 使用 Union FS 將這些不同的層結(jié)合到一個(gè)鏡像中去。 使用 docker pull 命令來從倉(cāng)庫(kù)獲取所需要的鏡像 $ sudo docker pull ubuntu:12.04 使用 docker images 顯示本地已有的鏡像,15,創(chuàng)建鏡像,從 Docker Hub 獲取已有鏡像并更新,最后使用 docker commit 命令來提交更新后的副本。 利用 Dockerfile 來創(chuàng)建鏡像 Dockerfile 中每一條指令都創(chuàng)建鏡像的一層,例如: 編寫完成 Dockerfile 后可以使用 docker build 來生成鏡像,16,鏡像導(dǎo)出、導(dǎo)入、移除,如果要導(dǎo)出鏡像到

7、本地文件,可以使用 docker save 命令。$sudo docker save -o ubuntu_14.04.tar ubuntu:14.04 可以使用 docker load 從導(dǎo)出的本地文件中再導(dǎo)入到本地鏡像庫(kù),例如:$ sudo docker load -input ubuntu_14.04.tar 如果要移除本地的鏡像,可以使用 docker rmi 命令。 使用下面的命令可以清理所有未打過標(biāo)簽的本地鏡像 $ sudo docker rmi $(docker images -q -f dangling=true),17,Docker 容器,啟動(dòng)容器有兩種方式,一種是基于鏡像新建

8、一個(gè)容器并啟動(dòng),另外一個(gè)是將在終止?fàn)顟B(tài)( stopped) 的容器重新啟動(dòng)。 新建并啟動(dòng) $ sudo docker run ubuntu:14.04 /bin/echo Hello world Hello world 啟動(dòng)已終止容器 docker start 添加 -d 參數(shù)來實(shí)現(xiàn)后臺(tái)運(yùn)行,不直接把執(zhí)行命令的結(jié)果輸出在當(dāng)前宿主機(jī)下。 使用 docker stop 來終止一個(gè)運(yùn)行中的容器 使用 docker attach 命令進(jìn)入容器進(jìn)行操作,18,如果要導(dǎo)出本地某個(gè)容器,可以使用 docker export 命令。 $ sudo docker export 7691a814370e ubun

9、tu.tar 可以使用 docker import 從容器快照文件中再導(dǎo)入為鏡像 $ cat ubuntu.tar | sudo docker import - test/ubuntu:v1.0 使用 docker rm 來刪除一個(gè)處于終止?fàn)顟B(tài)的容器。 用 docker rm $(docker ps -a -q)清理所有處于終止?fàn)顟B(tài)的容器,19,倉(cāng)庫(kù),目前 Docker 官方維護(hù)了一個(gè)公共倉(cāng)庫(kù) Docker Hub,其中已經(jīng)包括了超過 15,000的鏡像。 docker search 命令來查找官方倉(cāng)庫(kù)中的鏡像 docker pull 命令來將它下載到本地 有時(shí)候使用 Docker Hub 這

10、樣的公共倉(cāng)庫(kù)可能不方便,用戶可以創(chuàng)建一個(gè)本地倉(cāng)庫(kù)供私人使用。 registry 是官方提供的工具,可以用于構(gòu)建私有的鏡像倉(cāng)庫(kù),20,21,Docker 數(shù)據(jù)管理,使用數(shù)據(jù)卷和數(shù)據(jù)卷容器在 Docker 內(nèi)部以及容器之間管理數(shù)據(jù)。 掛載一個(gè)主機(jī)目錄作為數(shù)據(jù)卷 $ sudo docker run -d -P -name web -v /src/webapp:/opt/webapp training/webapp python app.py,22,Docker 中的網(wǎng)絡(luò)功能介紹,Docker 允許通過外部訪問容器或容器互聯(lián)的方式來提供網(wǎng)絡(luò)服務(wù)。 外部訪問容器 通過 -P 或-p 參數(shù)來指定端口映射

11、$ sudo docker run -d -p 5000:5000 training/webapp python app.py 容器互聯(lián) 使用 -link 參數(shù)可以讓容器之間安全的進(jìn)行交互 $ sudo docker run -d -P -name web -link db:db training/webapp python app.py,23,Docker 網(wǎng)絡(luò),24,多臺(tái)物理主機(jī)之間的容器互聯(lián)( 暴露容器到真實(shí)網(wǎng)絡(luò)中),25,一張圖總結(jié) Docker 的命令,26,底層實(shí)現(xiàn),Docker 底層的核心技術(shù)包括 Linux 上的名字空間( Namespaces) 、控制組( Control g

12、roups)、Union 文件系統(tǒng)( Union file systems)和容器格式( Container format) 。 大家雖然都共用一個(gè)內(nèi)核和某些運(yùn)行時(shí)環(huán)境( 例如一些系統(tǒng)命令和系統(tǒng)庫(kù)) ,但是彼此卻看不到,都以為系統(tǒng)中只有自己的存在。這種機(jī)制就是容器( Container) ,利用名字空間來做權(quán)限的隔離控制,利用 cgroups 來做資源分配。,27,AUFS (AnotherUnionFS),AUFS 是一種 Union FS, 簡(jiǎn)單來說就是支持將不同目錄掛載到同一個(gè)虛擬文件系統(tǒng)下的文件系統(tǒng), 更進(jìn)一步的理解, AUFS支持為每一個(gè)成員目錄(類似Git Branch)設(shè)定rea

13、donly、readwrite 和 whiteout-able 權(quán)限, 同時(shí) AUFS 里有一個(gè)類似分層的概念, 對(duì) readonly 權(quán)限的 branch 可以邏輯上進(jìn)行修改(增量地, 不影響 readonly 部分的)。,28,典型的啟動(dòng)Linux運(yùn)行需要兩個(gè)FS: bootfs + rootfs:,29,30,Docker的開源之路-用戶社區(qū)維護(hù)、源代碼管理、創(chuàng)建合作伙伴生態(tài)圈,31,應(yīng)用案例-在測(cè)試中使用Docker,使用Docker測(cè)試靜態(tài)網(wǎng)站 Sample網(wǎng)站的初始Dockerfile 構(gòu)建Sample網(wǎng)站和tomcat鏡像 從Sample網(wǎng)站和tomcat鏡像構(gòu)建容器 修改網(wǎng)站,32,應(yīng)用案例-中小

溫馨提示

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

評(píng)論

0/150

提交評(píng)論