版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
docker超詳細(xì)基礎(chǔ)教程 目錄Docker的介紹Docker的思想集裝箱標(biāo)準(zhǔn)化運(yùn)輸方式存儲方式API接口隔離Docker的組成Docker的運(yùn)行機(jī)制拉取鏡像的執(zhí)行流程啟動容器的執(zhí)行流程Docker運(yùn)行鏡像的流程Docker常用命令鏡像的操作命令容器的操作命令數(shù)據(jù)卷的操作命令Docker自定義鏡像Docker鏡像安裝實(shí)踐安裝MySQL數(shù)據(jù)庫拉取MySQL鏡像然后慢慢等待拉取下載完成,因?yàn)槭菑墓倬W(wǎng)拉取,所以有點(diǎn)慢.查看鏡像運(yùn)行鏡像登錄MySQL服務(wù)進(jìn)入MySQL容器登錄MySQL操作MySQL服務(wù)停止服務(wù)啟動服務(wù)查看MySQL啟動時日志設(shè)置MySQL開機(jī)自啟動安裝Redis數(shù)據(jù)庫拉取鏡像文件準(zhǔn)備配置文件創(chuàng)建Redis實(shí)例并啟動訪問Redis服務(wù)進(jìn)入容器檢查Redis版本登錄Redis安裝Ngnix代理拉取鏡像創(chuàng)建數(shù)據(jù)卷查看目錄啟動Nginx服務(wù)訪問Nginx服務(wù)安裝Nacos組件拉取鏡像執(zhí)行nacos的sql腳本創(chuàng)建并啟動nacos容器訪問nacos服務(wù)Docker的介紹 2010年幾個年輕人成立了一個做PAAS平臺的公司dotCloud.起初公司發(fā)展的不錯,不但拿到過一些融資,還獲得了美國著名孵化器YCombinator的支持,后來微軟谷歌亞馬遜這樣的大廠商也紛紛加入PAAS平臺,競爭十分激烈,dotCloud舉步維艱.2013年可能是公司發(fā)展的不是很好,工程師又不想自己的努力付之東流,于是他們決定將他們的核心技術(shù)開源.這項(xiàng)技術(shù)就是docker.當(dāng)時docker的功能就是將linux容器中的應(yīng)用代碼打包,可以輕松的在服務(wù)器之間進(jìn)行遷移.無心插柳柳成蔭,docker技術(shù)風(fēng)靡全球,于是dotCloud公司改名為dockerInc,并全面投入到docker的開發(fā)之中.2014.6Docker發(fā)布了第一個版本Docker1.02014.7獲得C輪融資$4000W2015.4獲得D輪融資$9500W至今已經(jīng)發(fā)布到dockerdocker是一個用來裝應(yīng)用的容器,就像杯子可以裝水,筆筒可以放筆,書包可以放書,可以把helloword放在docker中,可以把網(wǎng)站放入docker中,可以把任何想得到的程序放在docker中.Docker的思想集裝箱沒有集裝箱之前運(yùn)輸貨物,東西零散容易丟失,有了集裝箱之后貨物不容易丟失,我們可以把貨物想象成程序,目前我們要把程序部署到一臺新的機(jī)器上,可能會啟動不起來,比如少一些配置文件什么的或者少了什么數(shù)據(jù),有了docker的集裝箱可以保證我們的程序不管運(yùn)行在哪不會缺東西.標(biāo)準(zhǔn)化運(yùn)輸方式docker運(yùn)輸東西有一個超級碼頭,任何地方需要貨物都由鯨魚先送到超級碼頭,然后再由鯨魚從超級碼頭把貨物送到目的地去.對應(yīng)的技術(shù)來說,比如我們要把臺式機(jī)的應(yīng)用部署到筆記本上,我們可能選擇用QQ發(fā)過去或者用U盤拷過去,docker就標(biāo)準(zhǔn)化了這個過程,我們只需在臺式機(jī)上執(zhí)行一個docker命令,把鯨魚派過來,把程序送到超級碼頭去,再在筆記本上執(zhí)行一個docker命令,然后由鯨魚把程序從超級碼頭送到筆記本上去.存儲方式當(dāng)我們把程序存儲到筆記本上時,我們需要一個目錄,且我們要記住這個目錄,因?yàn)橄麓挝覀兛赡苓€要修改,有了docker之后我們就不用記住了程序在哪里了,我們使用的時候只需要一條命令就行了.API接口docker提供了一系列restapi的接口,包含了對docker也就是對我們的應(yīng)用的一個啟動停止查看刪除等等,如當(dāng)我們要啟動tomcat時我們要執(zhí)行startup命令,當(dāng)我們要停止時要執(zhí)行shutdown命令,如果不是tomcat,我們可能還需要一些別的命令.有了docker我們記docker的命令就可以對其進(jìn)行操作.隔離我們在使用虛擬機(jī)時有自己的cpu,硬盤,內(nèi)存,完全感覺不到外面主機(jī)的存在,docker也差不多,不過它更輕量,我們創(chuàng)建虛擬機(jī)可能要幾分鐘,但是docker只需要一秒.最底層的技術(shù)時linux一種內(nèi)核的限制機(jī)制,叫做LXC,LXC是一種輕量級的容器虛擬化技.最大效率的隔離了進(jìn)程和資源.通過cgroup,namespace等限制,隔離進(jìn)程組所使用的物理資源,比如CPU,MEMORY等等,這個機(jī)制在7,8年前已經(jīng)加入到linux內(nèi)核了,直到2013年docker出世的時候才火起來,大家可能奇怪為什么這么好的技術(shù)埋沒這么多年都沒人發(fā)現(xiàn)呢?英雄造時勢,時勢造英雄,如果沒有云計算,敏捷開發(fā),高頻度的彈性伸縮需求,沒有IT行業(yè)這么多年長足的發(fā)展,也就沒有docker.Docker的組成鏡像就像是集裝箱,倉庫就是超級碼頭,容器就是我們運(yùn)行程序的地方.docker運(yùn)行程序的過程就是去倉庫把鏡像拉到本地,然后用一條命令把鏡像運(yùn)行起來變成容器.build:構(gòu)建,就是構(gòu)建鏡像.ship:運(yùn)輸,運(yùn)輸鏡像,從倉庫和主機(jī)運(yùn)輸.run:運(yùn)行的鏡像就是一個容器.build,ship,run和鏡像,倉庫,容器是一一對應(yīng)的.鏡像 鏡像的英文名交image.前面我們講到了集裝箱,鯨魚拖著的所有集裝箱就是一個鏡像.從本質(zhì)上來說鏡像就是一系列文件,可以包括我們應(yīng)用程序的文件,也可以包括我們應(yīng)用的運(yùn)行環(huán)境的文件,既然是文件,那么是以什么樣的格式在本地保存的呢?說到存儲格式,就要提到linux的一個存儲技術(shù),叫做聯(lián)合文件系統(tǒng),是一種分層的文件系統(tǒng),可以將不同的目錄掛到同一個虛擬文件系統(tǒng)下.比如test1下有三個文件夾,test2下有兩個文件夾,還有一個readme文件.聯(lián)合文件系統(tǒng)就是可以在一個文件夾(test)中看到多個文件夾(test1,test2)中的內(nèi)容.通過這種方式可以實(shí)現(xiàn)文件的分層,test1可以把它看作第一層,test2可以把它看作第二層,每一層有每一層自己的文件,docker就是利用了這種分層的概念實(shí)現(xiàn)了鏡像存儲.下圖就是鏡像的存儲格式,這張圖是分層的,最下面一層,上面也是一層層的好像集裝箱羅列在一起.這就是鏡像最直觀的存儲方式.下面是操作系統(tǒng)的引導(dǎo),上面是linux操作系統(tǒng),再上面是一些相關(guān)的軟件,如果是我們自己的程序,就可以是tomcat,jdk,再往上是應(yīng)用代碼,每一層是我們自己都可以控制得,最上面一層先忽略不看,因?yàn)檫@是和容器有關(guān)的.注意一點(diǎn),docker鏡像系統(tǒng)的每一層都是只讀的,然后把每一層加載完成之后這些文件都會被看成是同一個目錄,相當(dāng)于只有一個文件系統(tǒng).docker的這種文件系統(tǒng)被稱之為鏡像.容器 為了便于理解,大家可以把容器想象成虛擬機(jī),每個虛擬機(jī)都有自己的文件系統(tǒng),可以把圖1整個一部分看成是文件系統(tǒng),與虛擬機(jī)系統(tǒng)的區(qū)別是這里面的文件系統(tǒng)是一層一層的,并且最下面的n層都是只讀的,只有上面一層是可寫的.為什么要有可寫的這層呢?大家的程序運(yùn)行起來,勢必會要寫一些日志,寫一些文件,或者對系統(tǒng)的某一些文件做一些修改,所以容器在最上面一層創(chuàng)建了可讀可寫的文件系統(tǒng).在程序的運(yùn)行過程中,如果要寫鏡像文件時,因?yàn)殓R像的每一層都是只讀的,它會把文件的每一層拷到文件的最上層,然后再對它進(jìn)行修改,修改之后,當(dāng)我們的應(yīng)用讀一個文件時會從頂層進(jìn)行查找,如果沒有才會找下一層.由于容器的最上一層是可以修改的,鏡像是不能修改的,這樣就能保證鏡像可以生成多個容器獨(dú)立運(yùn)行,沒有任何干擾.倉庫我們的鏡像是要在其它機(jī)器上運(yùn)行,如何進(jìn)行傳輸呢?這就用到了docker倉庫,我們要先把我們的鏡像傳到docker倉庫中,再由目的地把docker倉庫拉過去,這就完成了這樣的一次傳輸過程.誰提供了這樣的倉庫呢?docker自己提供了,,但是非常慢,為了解決這個問題,國內(nèi)很多公司也在做自己的倉庫.比較知名的是由網(wǎng)易蜂巢提供的/hub#/m/home/Docker的運(yùn)行機(jī)制拉取鏡像的執(zhí)行流程dockerpull執(zhí)行過程:客戶端將指令發(fā)送給dockerdaemondockerdaemon先檢查本地images中有沒有相關(guān)的鏡像如果本地沒有相關(guān)的鏡像,則向鏡像服務(wù)器請求,將遠(yuǎn)程鏡像下載到本地啟動容器的執(zhí)行流程dockerrun執(zhí)行過程:檢查本地是否存在指定的鏡像,不存在就從公有倉庫下載利用鏡像創(chuàng)建并啟動一個容器分配一個文件系(簡版linux系統(tǒng)),并在只讀的鏡像層外面掛載一層可讀寫層從宿主機(jī)配置的網(wǎng)橋接口中橋接一個虛擬接口到容器中去從地址池配置一個ip地址給容器執(zhí)行用戶指定的應(yīng)用程序Docker運(yùn)行鏡像的流程DockerHost是我們的docker宿主機(jī)(就是安裝了docker的操作系統(tǒng))Registry是docker拉取鏡像的遠(yuǎn)程倉庫,提供大量的鏡像供下載,下載完成之后保存在Images中DockerDaemon是docker的服務(wù)線程,處理Docker客戶端命令。Images是Docker本地的鏡像倉庫,可以通過dockerimages查看鏡像文件。Docker常用命令 鏡像的操作命令 1.拉取鏡像到本地pull鏡像名稱[:tag]舉個例子tomcatdockerdockerpulldaocloud.io/library/tomcat:8.5.15-jre82.查看全部本地的鏡像dockerdockerimages3.刪除本地鏡像dockerdockerrmi鏡像的標(biāo)識4.鏡像的導(dǎo)入導(dǎo)出(不規(guī)范)dockerdockersave-o導(dǎo)出的路徑鏡像iddockerdockerload-i鏡像文件修改鏡像名稱dockerdockertag鏡像id新鏡像名稱:版本容器的操作命令 1.運(yùn)行容器##簡單操作dockerdockerrun鏡像的標(biāo)識|鏡像名稱[tag]##常用的參數(shù)dockerdockerrun-d-p宿主機(jī)端口:容器端口--name容器名稱鏡像的標(biāo)識|鏡像名稱[tag]##-p:宿主機(jī)端口:容器端口:為了映射當(dāng)前Linux的端口和容器的端口--name容器名稱指定容器的名稱2.查看正在運(yùn)行的容器dockerdockerps[OPTIONS]-q:只查看容器的標(biāo)識指定返回值的模板文件-n:列出最近創(chuàng)建的n個容器--no-trunc:不截斷輸出-s:-s:顯示總的文件大小3.查看容器的日志dockerdockerlogs-f容器id-f:-f:可以滾動查看日志的最后幾行4.進(jìn)入到容器內(nèi)部dockerdockerexec-it容器idbash##5.刪除容器(刪除容器前,需要先停止容器)dockerdockerstop容器iddockerdockerstop$(dockerps-qa)停止全部容器dockerdockerrm鏡像id刪除指定容器dockerdockerrm$(dockerps-qa)刪除全部容器刪除全部容器dockerdockerstart容器id數(shù)據(jù)卷的操作命令 數(shù)據(jù)卷介紹:將宿主機(jī)的一個目錄映射到容器的一個目錄中。數(shù)據(jù)卷作用:可以在宿主機(jī)中操作目錄中的內(nèi)容,那么容器內(nèi)部映射的文件,也會跟著一起改變。1.創(chuàng)建數(shù)據(jù)卷dockerdockervolumecreate數(shù)據(jù)卷名稱##創(chuàng)建數(shù)據(jù)卷之后默認(rèn)會存放在一個目錄下/var/lib/docker/volumes/數(shù)據(jù)卷名稱/_data#2.查看數(shù)據(jù)卷的詳細(xì)信息卷的詳細(xì)信息dockerdockervolumeinspect數(shù)據(jù)卷名稱3.查看全部數(shù)據(jù)卷dockerdockervolumels#4.刪除數(shù)據(jù)卷dockerdockervolumerm數(shù)據(jù)卷名稱5.應(yīng)用數(shù)據(jù)卷##當(dāng)你映射數(shù)據(jù)卷時,如果數(shù)據(jù)卷不存在。Docker會幫你自動創(chuàng)建dockerdockerrun-v數(shù)據(jù)卷名稱:id##直接指定一個路徑作為數(shù)據(jù)卷的存放位置。這個路徑下是空的。dockerdockerrun-v路徑:容器內(nèi)部的路徑鏡像idDocker自定義鏡像 中央倉庫上的鏡像,也是Docker的用戶自己上傳過去的。所以我們完全可以自己創(chuàng)建一個鏡像.##1.創(chuàng)建一個Dockerfile文件,并且指定自定義鏡像信息。##Dockerfile文件中常用的內(nèi)容from:from:指定當(dāng)前自定義鏡像依賴的環(huán)境copy:copy:將相對路徑下的內(nèi)容復(fù)制到自定義鏡像中workdir:workdir:聲明鏡像的默認(rèn)工作目錄cmd:cmd:需要執(zhí)行的命令(在workdir下執(zhí)行的,cmd可以寫多個,只以最后一個為準(zhǔn))##舉個例子,自定義一個tomcat鏡像,并且將ssm.war部署到tomcat中fromfromdaocloud.io/library/tomcat:8.5.15-jre8copycopyssm.war/usr/local/tomcat/webappsDocker鏡像安裝實(shí)踐 安裝MySQL數(shù)據(jù)庫 拉取MySQL鏡像一種方法是在上搜索mysql鏡像,拉取指定版本的mysql,也可以指定拉取版本,如:dockerdockerpullmysql:8.0.23然后慢慢等待拉取下載完成,因?yàn)槭菑墓倬W(wǎng)拉取,所以有點(diǎn)慢.另一種方法是:事先獲取到了mysql的壓縮文件如mysql.tar.gz,然后將它拖拉到相應(yīng)目錄下(我的目錄是/root/setup/images/),然后然后進(jìn)入該目錄下使用如下命令也可以很快達(dá)到效果.我使用的是這種方法.dockerdockerload-imysql.tar.gz查看鏡像然后可以查看一下mysql鏡像,使用如下命令:dockerdockerimages可以看到鏡像已經(jīng)存在了.運(yùn)行鏡像啟動運(yùn)行mysql鏡像(dockerrun用于啟動一個容器),命令如下:sudosudodockerrun-p3306:3306--namemysql\-v-v/usr/local/docker/mysql/mysql-files:/var/lib/mysql-files\-v-v/usr/local/docker/mysql/conf:/etc/mysql\-v-v/usr/local/docker/mysql/logs:/var/log/mysql\-v-v/usr/local/docker/mysql/data:/var/lib/mysql\\-d-dmysql:8.0.23假如安裝過程中失敗了,則可通過dockerps-a查看以前的容器,假如已存在,則通過dockerrm鏡像id刪除再重新安裝即可。登錄MySQL服務(wù) 進(jìn)入MySQL容器進(jìn)入容器的命令如下:dockerdockerexec-itmysqlbash#mysql是容器名登錄MySQL登錄mysql(密碼是root),前提是進(jìn)入了mysql容器.mysqlmysql-uroot-proot操作MySQL服務(wù) 停止服務(wù)停止mysql服務(wù)命令:dockerdockerstopmysql啟動服務(wù)啟動mysql服務(wù)命令:dockerdockerstartmysql查看MySQL啟動時日志假如希望查看mysql啟動時的日志,可以執(zhí)行下面這個指令。dockerdockercontainerlogsmysql設(shè)置MySQL開機(jī)自啟動如果需要設(shè)置mysql開機(jī)自動啟動,可使用如下命令:dockerdockerupdatemysql--restart=always安裝Redis數(shù)據(jù)庫 拉取鏡像文件同拉取mysql數(shù)據(jù)庫步驟一樣,我這兒是在conf目錄下拉取的,其實(shí)在哪兒無所謂,不用在意和我的不一樣.準(zhǔn)備配置文件需先準(zhǔn)備一個目錄,配置文件就放在這個目錄下.創(chuàng)建目錄如下:mkdirmkdir-p/usr/local/docker/redis01/conf然后在該目錄下創(chuàng)建redis.conf配置文件,這個配置文件必須要創(chuàng)建,否在我們進(jìn)行目錄掛載時默認(rèn)生成的是一個目錄.touchtouch/usr/local/docker/redis01/conf
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026廣西梧州市中小學(xué)(幼兒園)招聘專任教師321人(梧州學(xué)院專場)備考筆試題庫及答案解析
- 2025年真實(shí)護(hù)理面試題及答案
- 道法5.2課件教學(xué)課件
- 2025年電梯技師面試題及答案
- 2025陜西凌云電器集團(tuán)有限公司社會招聘21人備考考試試題及答案解析
- 2025年常量池面試題及答案
- 2025年初學(xué)剪輯面試題及答案
- 2025年中醫(yī)學(xué)比賽考試題及答案
- 2026年疫苗采購協(xié)議
- 2025西安市未央?yún)^(qū)中醫(yī)醫(yī)院招聘參考考試題庫及答案解析
- 流產(chǎn)診斷證明書
- 2023年廣告制作驗(yàn)收報告(5篇)
- GA 1814.3-2023鐵路系統(tǒng)反恐怖防范要求第3部分:運(yùn)營線路
- 川瀘運(yùn)地塊土石方量勘察報告報告
- 威廉姆斯內(nèi)分泌學(xué) 內(nèi)分泌學(xué)書籍
- 食品營養(yǎng)學(xué)(暨南大學(xué))智慧樹知到答案章節(jié)測試2023年
- GB/T 20933-2021熱軋鋼板樁
- 遼寧省大連市2021-2022學(xué)年高一上學(xué)期期末化學(xué)試題Word版含答案
- 三年級消防安全主題 火災(zāi)逃生有辦法 主題班會教育教學(xué)課件
- 大氣科學(xué)概論 大氣輻射課件
- 《電力拖動控制線路與技能訓(xùn)練(第六版)》電子教案(全)完整版(不可編輯)
評論
0/150
提交評論