版權(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 三字經(jīng)讀后感(15篇)
- 從幾何的角度解釋乘法公式教學設(shè)計模板
- 班長競選演講稿模板集錦六篇
- 校園演講稿4篇資料
- 讓字飛翔:寫一篇有關(guān)大自然的好詞好句
- 二級建造師之二建建設(shè)工程法規(guī)及相關(guān)知識題庫【奪冠】
- 2020年遼寧朝陽中考滿分作文《你是我心里的那束光》2
- 第四代住房庭院房技術(shù)解答(清華大學)
- 保健品行業(yè)發(fā)展趨勢預(yù)測考核試卷
- 造紙設(shè)備在造紙化學品應(yīng)用的研究考核試卷
- 電子政務(wù)概論-形考任務(wù)5(在線測試權(quán)重20%)-國開-參考資料
- 形勢與政策:“一國兩制”與祖國統(tǒng)一系列專題智慧樹知到期末考試答案2024年
- 中考作文復(fù)習:議論文寫作指導(dǎo)課件(23張PPT)
- 消防水泵接合器安裝99S203
- 急性胃腸炎病歷模板4頁
- 淺談民族地區(qū)寄宿制學生良好行為習慣的養(yǎng)成
- 高空作業(yè)車維護檢查表、高空施工作業(yè)車日周月檢查表
- 第4章-pandas統(tǒng)計分析基礎(chǔ)PPT課件
- 1421平方差公式教案
- 社會醫(yī)學期末復(fù)習重點總結(jié)完整版
- 幾個方便面調(diào)味包配方
評論
0/150
提交評論