講稿大數(shù)據(jù)-ker課程_第1頁
講稿大數(shù)據(jù)-ker課程_第2頁
講稿大數(shù)據(jù)-ker課程_第3頁
講稿大數(shù)據(jù)-ker課程_第4頁
講稿大數(shù)據(jù)-ker課程_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

為什么會出現(xiàn)docker?初識docker使用docker運行一個容器docker

run-i-tcentos/bin/bashls(文件)ps(進程)ipa(網(wǎng)絡(luò))從這里可以看出,這個容器和虛擬機還是比較類似的。平時使用的?虛擬機和容器對比?虛擬機和容器的區(qū)別相同點都可以在不同的主機之間遷移都具備root權(quán)限都具有備份操作不同點虛擬機是硬件級別的虛擬化,容器是操作系統(tǒng)級別的虛擬化。虛擬機啟動需要幾分鐘,而容器可以達到秒級啟動。一個虛擬機會占用幾個GB的磁盤空間,而容器只占用幾百MB。虛擬機的性能要弱

生系統(tǒng),而容器的性能接近生系統(tǒng),因為容器底層使用的是宿主機系統(tǒng)。一臺服務(wù)器最多支持幾十個虛擬機,但是可以支持上千個容器。?Docker的應(yīng)用加速本地開發(fā)和構(gòu)建流程。容器可以在開發(fā)環(huán)境中構(gòu)建,然后輕松提交到測試環(huán)境中,最終進入生產(chǎn)環(huán)境。能夠讓應(yīng)用程序在不同的環(huán)境中,得到相同的運行結(jié)果。為開發(fā)、測試提供一個輕量級的獨立沙盒環(huán)境。提供

即服務(wù)應(yīng)用程序。高性能、超大規(guī)模的宿主機部署。?docker核心組件docker采用的是c/s架構(gòu),具有客戶端和服務(wù)端,如右圖,它主要包含以下三大組件鏡像鏡像是構(gòu)建docker世界的基石。也是docker生命周期中的“構(gòu)建”部分??梢园宴R像當作容器的"源代碼"鏡像體積小,非?!氨銛y”,易于分享、存儲和更新??梢园宴R像簡單的理解為windows系統(tǒng)的鏡像Registry(倉庫)docker用registry來保存用戶構(gòu)建的鏡像以及官方的鏡像,registry分為公有和私有。可以簡單的理解為一個倉庫。Docker公司運營的registory叫做docker

hub容器容器是基于鏡像啟動的,容器中可以運行一個或多個進程。鏡像是docker生命周期中的構(gòu)建或打包階段,而容器則是啟動或執(zhí)行階段。倉庫里面存儲著鏡像,基于鏡像可以啟動容器。?docker案例流程Docker運行環(huán)境Docker可以運行在任何安裝了linux內(nèi)核的64位CPU的主機上,不支持32位CPU。的內(nèi)核版本是3.8或者更高。在ubuntu或者redhat系列主機中部署Docker宿主機的內(nèi)核必須支持一種適合的 驅(qū)動DeviceMapper(默認驅(qū)動)宿主機的內(nèi)核必須支持并開啟cgroup和命名空間(namespace)功能cgroup和namespaces在2.6版本之后已經(jīng)集成在linux內(nèi)核之中了。Docker的開銷比較低,可以用于服務(wù)器、臺式機、或筆記本。?安裝Docker以centos7(64位)為例:必須是64位系統(tǒng),建議使用英文版本,中文版本也會有問題。centos7(64位)

地址:/centos/7.1.1503/isos/x86_64/CentOS-7-x86_64-DVD-1503-01.iso1:驗證linux內(nèi)核版本,uname-a,版本以上。2:檢查Device

Mapper(Docker的建議使用3.8驅(qū)動),grepdevice-mapper

/proc/devices如果不存在則安裝yum

install-y

device-mapper加載dm_mod內(nèi)核模塊modprobe

dm_mod3:安裝docker(centos7)yum

-y

install

docker(默認安裝 版)?安裝指定版本的docker查看可安裝的版本yum

makecache

fast(相當于更新本地緩存

yum

list

docker--showduplicates安裝指定版本yum

-y

install

docker-1.6.2-14.el7.centos?Docker入門啟動dockersystemctl

start

docker(centos7)啟動dockersystemctl

enable

docker(centos7)添加開機啟動項驗證docker是否正常systemctl

status

dockerdocker

info運行一個容器(交互式)docker

run

-i

-t

centos

/bin/bash-i

表示stdin標準輸入-t表示tty終端退出容器exit查看docker命令docker幫助命令docker

help

run?執(zhí)行docker

run提示警告信息docker

1.6.2版本修改/etc/sysconfig/docker文件?docker

run

命令的內(nèi)部流程?docker容器操作命令(1)查看容器列表docker

ps

[-a]

[-l]

[-n

num]給容器命名docker

run

--name

crxy

-t

-i

centos

/bin/bash合法的容器名稱正則[a-zA-Z0-9_.-]重新啟動已經(jīng)停止的容器docker

start

容器名稱/容器ID附著到一個容器上docker

attach容器名稱/容器ID創(chuàng)建長期運行的容器docker

run

--name

daemon_crxy

-d

centos

/bin/bash

-c

"while

true;do

echoo

world;

sleep

1;done"獲取容器日志docker

logs[--tail

num][-t][-f]容器名稱/容器ID(日志位置/var/lib/docker/containers/ID/ID-json.log)查看容器內(nèi)的進程dockertop

容器名稱/容器ID在容器 運行進程(docker1.3之后才支持)docker

exec

-d

daemon_crxy

touch/etc/crxy_file:表示只執(zhí)行一條命令docker

exec-t-i

daemon_crxy/bin/bash:表示可以執(zhí)行多條命令?docker容器操作命令(2)停止容器docker

stop

容器名稱/容器IDdocker

kill

容器名稱/容器ID獲取容器詳細信息docker

inspect

[--format

|-f]容器名稱/容器ID例子:docker

inspect--format='{{.State.Running}}'crxy容器

位置:/var/lib/docker/containers刪除容器docker

rm

容器名稱/容器IDdocker

rm

`docker

ps-a-q`(刪除所有容器)容器的導(dǎo)入和導(dǎo)出導(dǎo)出:docker

export

容器ID>my_container.tar導(dǎo)入:cat

mycontainer.tar

|

docker

import-鏡像名稱:鏡像的保存和加載保存:docker

save

鏡像ID>my_image.tar加載:docker

load<my_image.tar?深入docker鏡像拉取鏡像文件到本地docker

pull

centos查看本地鏡像:docker

images查找鏡像docker

search[鏡像名稱]構(gòu)建鏡像1:使用docker

commit

命令docker

commit

容器名稱/ID

crxy/centos-tomcatdocker

commit-m="describe"--author="teacher"容器名稱/IDcrxy/centos-tomcat:testdocker

inspect

crxy/centos-tomcat:test2:使用docker

build命令和Dockerfile文件(

)docker

build

-t="crxy/centos"

.查看構(gòu)建的步驟和層級docker

history

用戶ID/鏡像名?Dockerfile中指令執(zhí)行流程dockerfile中的指令會按照從上到下執(zhí)行docker按照如

程執(zhí)行dockerfile中的指令docker首先從基礎(chǔ)鏡像運行一個容器執(zhí)行一條指令,對容器進行修改執(zhí)行類似docker

commit的操作,提交一個新的鏡像層。docker再基于剛提交的鏡像運行一個新容器

執(zhí)行dockerfile中的下一條指令,直到所有指令都執(zhí)行完畢。?Dockerfile指令詳解一所有指令都必須為大寫字母以#開頭的都認為是注釋

第一條指令必須是FROMFROM(指定使用的基礎(chǔ)鏡像)MAINTAINER(指定鏡像的作者信息)RUN(指定鏡像被構(gòu)建時要運行

令)默認會使用/bin/bash-c

執(zhí)行RUN

后面指定

令也可以使用RUN

["mkdir","a.txt"]EXPOSE(告訴docker該容器需要對外開放的端口)docker的構(gòu)建緩存由于每一步的構(gòu)建過程都會將結(jié)果提交為鏡像,所以docker的構(gòu)建鏡像過程就顯得非常聰明,它會將之前的鏡像層看作緩存。再進行重新構(gòu)建時會從第一條發(fā)生了變化的指令開始,前面的都使用緩存可以使用--no-cache

參數(shù)來指定不使用緩存功能一般會在dockerfile中使用ENV指令設(shè)置一個時間(ENV

CREATE_TIME

2015-01-01)?容器端口映射默認情況下docker不會自動打開這些端口,必須在運行容器的時候指定-P(大寫)參數(shù),這樣就可以打開expose指定的所有端口。使用expose指定端口只是為了方便使用-P參數(shù)在啟動容器的時候開放端口。EXPOSE指令可以同時指定一個或多個需要對外開放的端口expose

80

8080

6379如果沒有使用expose指定需要對外開放的端口,還可以在啟動容器的時候動態(tài)指定,使用-p(小寫)參數(shù)-p

80(docker會在宿主機上隨機選擇一個未被使用的端口來映射到容器中的80端口上)-p

8080:8080(把宿主機上的8080端口映射到容器的8080端口)-p

80:80-p

8080:8080

同時指定多個使用docker

ps

可以查看容器的端口分配情況或者使用docker

port

容器ID/名稱查看總結(jié)-P(大寫)這樣的話會將dockerfile文件中EXPOSE

指令指定的所有端口一并公開-p(小寫)可以手工指定需要對外公開的端口這兩個參數(shù)可以同時使用?Dockerfile指令詳解二CMD(指定一個容器運行時要執(zhí)行 令)docker

run-i-t

crxy/cenos-tomcat

/bin/bash在Dockerfile中添加

CMD

["/bin/ps"]注意:使用docker

run

命令可以覆蓋CMD指令。ENTRYPOINT(與CMD類似,但是ENTRYPOINT指定令不會被dockerrun指定

令覆蓋,它會把docker

run命令行中指定的參數(shù)傳遞給ENTRYPOINT指令中指定 令當作參數(shù)。)ENTRYPOINT

["/bin/ps"]docker

run

-t

-i

crxy/centos

-lENTRYPOINT

還可以和CMD組合一塊來用,可以實現(xiàn),當用戶不指定參數(shù)的時候使用默認的參數(shù)執(zhí)行,如果用戶指定的話就使用用戶提供的參數(shù)ENTRYPOINT

["/bin/ps"]CMD["-h"]注意:如果確實要覆蓋默認的參數(shù)的話,可以在docker

run中指定--entrypoint進行覆蓋WORKDIR(指定工作

)WORKDIR

/etc

RUN

touch

a.txtWORKDIR

/usr/local,但是不會影響之前在工作中執(zhí)行RUN

touch

b.txt注意:可以在docker

run命令中使用-w覆蓋工作令?Dockerfile指令詳解三ENV設(shè)置環(huán)境變量,在這設(shè)置的環(huán)境變量可以在后面的指令中使用,使用$并且這個環(huán)境變量也會被持久保存到從

的鏡像創(chuàng)建的任何容器中。可以使用env命令查看也可以使用docker

run命令行的-e參數(shù)來傳遞環(huán)境變量,這些變量只在運行時有效-eJAVA_HOME=/usr/local?Dockerfile指令詳解四VOLUME(可以理解為設(shè)置共享

,磁盤掛載)這個指令用來向基于鏡像創(chuàng)建的容器添加卷,一個卷可以存在于一個或者多個容器內(nèi)的特定的

。特點1:卷可以在容器間共享和重用2:對卷的修改是立刻生效的3:對卷的修改不會對更新鏡像產(chǎn)生影響4:卷會一直存在直到?jīng)]有任何容器再使用它。卷功能可以讓

一些數(shù)據(jù)添加到鏡像中而不是將將這個內(nèi)容提交到鏡像中。并且允許在多個容器間共享這些內(nèi)容。格式:VOLUME["/usr/projrct"]還可以一次指定多個VOLUME["/usr/project","/data"]創(chuàng)建數(shù)據(jù)卷VOLUME

["/usr/projrct"]或者在啟動容器的時候創(chuàng)建docker

run-it-v/webapp

centos/bin/bash注意:默認情況下,如果只是 數(shù)據(jù)卷而沒有

到宿主機上的具體

,docker會在/var/lib/docker/vfs/dir/下分配一個具有唯一名字的

給該數(shù)據(jù)卷。通過docker

inspect

命令可以查看具體路徑指定宿主主機

作為數(shù)據(jù)卷docker

run

-it

-v

/usr/local/webapp:/webapp

centos

/bin/bash注意:如果容器 已經(jīng)存在webapp

,那么 中的文件將會被覆蓋。默認情況下,數(shù)據(jù)卷是具有讀寫權(quán)限,rw權(quán)限,可以改為只讀權(quán)限,ro

docker

run

-it

-v

/usr/local/webapp:/webapp:ro

centos

/bin/bash見備注?使用volume注意注意:如果發(fā)現(xiàn)執(zhí)行下面命令創(chuàng)建volume在容器中沒有寫權(quán)限的時候docker

run

-it

-v

/usr/local/webapp:/webapp

centos/bin/bash進入容器

cdwebapptoucha.txttouch:

cannot

touch'a':

Permission

denied解決方法:1:setenforce

0(立刻生效,不需要重啟操作系統(tǒng))

2:修改/etc/selinux/config文件中的SELINUX=disabled,然后重啟生效?Dockerfile指令詳解五下的指定文件到鏡像中(注意只能是構(gòu)建目ADDADD指令用來將構(gòu)建錄下面的文件)ADD

a.txt/etc/a.txtADD

在添加壓縮文件的時候會把壓縮文件自動解壓。(gzip

bzip2

xz),如果,那么這些文件將會被覆目的位置已經(jīng)存在了和壓縮文件同名的文件或者蓋。COPYCOPY和ADD類似,但是COPY命令不會對壓縮文件進行解壓,只負責復(fù)制。如果目的位置不存在,docker會自動創(chuàng)建所有需要的 ,就像使用make-p一樣的源文件必須在當前構(gòu)建環(huán)境注意:使用COPY和ADD

令的時候,之內(nèi),也就是和Dockerfile同一,否則會找不到。?Dockerfile指令詳解六.dockerignore在執(zhí)行build的時候忽略掉不需要的文件。?推送鏡像?刪除鏡像刪除鏡像docker

rmi

用戶ID/鏡像名或者docker

rmi

`docker

images-a-q`刪除所有未打 的鏡像docker

rmi

-f

$(docker

images

--filter

'dangling=true')?Docker應(yīng)用實例-web應(yīng)用web服務(wù)器容器首先安裝jdk(jdk1.7.0_75)ENV

JAVA_HOME

/usr/local/jdk1.7ENV

JRE_HOME

/usr/local/jdk1.7/jreENVCLASSPATH

.:$JAVA_HOME/jre/lib/rt.jar

:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarENV

PATH

$JAVA_HOME/bin:$PATH再安裝tomcat啟動tomcat使用這個命令./catalina.sh

rundocker

run

-d

-P

-v/usr/local/crxy:/usr/local/tomcat7/webapps/ROOTcrxy/tomcat

./catalina.sh

run?Docker應(yīng)用實例-redis服務(wù)redis數(shù)據(jù)庫容器(單機)注意:在啟動redis的容器之后,如果沒有在docker

run中指定-P,那么只能在宿主機或者其他容器里面 這個redis服務(wù),在其他機器上是不能reids服務(wù)的,使用-P參數(shù)指定端口 之后就可以在其它機器上指定宿主機的ip和端口進行 容器里面的redis服務(wù)了。redis主從結(jié)構(gòu)數(shù)據(jù)庫使用容器互聯(lián)實現(xiàn)主從數(shù)據(jù)庫通信?安裝redis鏡像首先安裝c的編譯環(huán)境yum

-y

install

cppyum

-yinstall

binutilsyum

-yinstall

glibcyum

-y

install

glibc-kernheadersyum

-yinstall

monyum

-y

install

glibc-develyum

-y

install

gccyum

-yinstall

makemake

MALLOC=libchtt/article/14/1219/42002.html?容器互聯(lián)使兩個容器互聯(lián)--link

的容器名字:

后容器的別名這樣在啟動一個容器的話就不需要使用-p公開端口了,因為通過把容器鏈接到一起,可以讓父容器直接 任意子容器的公開端口。如果想讓redis服務(wù)于多個web應(yīng)用的話,只需要把對應(yīng)web應(yīng)用程序的容器和同一個redis容器連接到一起就可以了。注意:被

的容器必須運行在同一個docker宿主機上,不同docker宿主機上運行的容器無法連接。容器連接之后,docker會在父容器里的以下兩個地方寫入 信息。/etc/hosts文件,里面會保存子容器的ip和主機名的

,當子容器重啟的時候(ip地址會發(fā)生變化),這個文件中的ip地址會被對應(yīng)的更新(從docker1.3開始)。環(huán)境變量,使用env可以看到子容器的配置信息這樣的話在父容器中就可以使用子容器的別名來

子容器中的服務(wù)了。?docker

run命令常用參數(shù)總結(jié)dockerrun-t-i打開stdin和偽終端-d

運行容器--name

指定容器名稱-h/--hostname

指定容器主機名-p

開放指定端口-P

開放expose指定的端口-v

向容器中掛載卷--volumes-from

把指定容器里的所有卷都加入到新創(chuàng)建的容器里docker

run

-it

--name

test

-v

/usr/local/crxy:/usr/local/crxycentos

/bin/bashdocker

run

-it

--volumes-from

test

centos

/bin/bash--rm

刪除容器--link

容器互聯(lián)?shipyardShipyard()是建立在docker集群管理工具Citadel之上的可以管理容器、主機等資源的web圖形化工具。重新啟動docker(添加TCP

)默認情況下docker

只接受來自本機的root用戶的請求。事實上,Docker

默認的是

管理。unix//var/run/docker.sock套接字文件。這里需要修改docker

的 端口,使docker支持docker

-H

tcp://0.0.0.0:2375-H

unix:///var/run/docker.sock

-d或者修改vi/etc/sysconfig/docker,添加-H

tcp://0.0.0.0:2375-Hunix:///var/run/docker.sock啟動rethinkdbdocker

run-it-d--nameshipyard-rethinkdb-data

--entrypoint

/bin/bashshipyard/rethinkdb

-ldocker

run

-it-P-d

--nameshipyard-rethinkdb

--volumes-from

shipyard-rethinkdb-data

shipyard/rethinkdb啟動shipyard控制器docker

run-it

-p

8080:8080

-d--name

shipyard

--link

shipyard-rethinkdb:rethinkdbshipyard/ship

溫馨提示

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

評論

0/150

提交評論