版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、【2082233439】開發(fā)環(huán)境測試環(huán)境 預(yù)生產(chǎn)環(huán)境生產(chǎn)環(huán)境認識Docker官網(wǎng): https/get-started/ 是這么定義docker的。Docker is a platform for developers and sysadmins to build, run, and share applications with containers. The use of containers to deploy applications is called containerization.Containers are not new, but their use for easily
2、deploying applications is.Docker是為開發(fā)和系統(tǒng)管理員提供容器構(gòu)建,運行和共享應(yīng)用程序的。使用容器來部署應(yīng)用程序稱為。容器不是新的,但用于輕松部署應(yīng)用程序的容器卻是新的。Docker的優(yōu)勢(1)有助于Microservi的和部署充分利用物理機資源,同時能夠整合服務(wù)器資源提高開發(fā)效率,測試效率,部署效率,有利于DevOps的,CICD(4)云原生,應(yīng)用更好地遷移Docker安裝Docker依賴于系統(tǒng)的一些必要工具yum install -y yum-utils device-mappersistent-data lvm2Device Mapper 是 Linux2.
3、6 內(nèi)核中支持邏輯卷管理的通用設(shè)備機制,而device-mapper-persistent-data和lvm2是Device Mapper驅(qū)動程序必須要的工具device-mappersistent-data :驅(qū)動管理lvm2: 邏輯卷管理設(shè)置Docker安裝的yum源yum-config-managerhttps:/d-add-repo/linux/centos/docker-ce.repo安裝Dockeryum yumyumclelmakecache fast# 更新 yum 緩存-y install docker-ce # 安裝docker-ce啟動Dockersystemctl st
4、art docker設(shè)置開機啟動systemctl start docker.servicesystemctl enable docker.service運行第一個容器接下來,通過Docker部署一個Tomcat容器創(chuàng)建tomcat容器dockull tomcatdocker run -d -name_tomcat -p 8080:8080 tomcat-d 表示運行容器,并返回容器ID-p 將容器的端口到宿主機的端口,第一個8080表示到宿主機的端口,第二個8080到宿主機的8080端口表示tomcat容器的端口,相當于把容器中運行的tomcat的端上進入到容器中docker exec -i
5、t containerid /bin/bash相關(guān)命令查看容器列表docker contailer ls進入到容器docker exec -i containerid /bin/bash在容器中安裝apt-get update apt-get install vim查看所有容器s -alldocktomcat運行tomcat容器之后,面。, 這個時候會提示400,找不到頁原因是用阿里云倉庫中提供的tomcat鏡像,默認的webapps的名字變成了webapps.dist,導(dǎo)致沒有默認可以的頁面,所以只需要進入到容器中修改一下就行。docker exec -i containerid /bin/
6、bash刪除webapps目錄,再執(zhí)行首頁了。ull比較慢mv webapps.dist webapps 。重新就可以進入到tomcat的Dock在上面的案例中,執(zhí)行dockull 去倉庫拉去鏡像時,會發(fā)現(xiàn)很慢,這是因為docker默認會從庫中拉去鏡像,這個是國外的將鏡像源修改為阿里云登錄阿里云,找到 產(chǎn)品與服務(wù) - 容器鏡像服務(wù) - 鏡像起來比較慢,所以可以通過以下步驟,可以看到下圖所示的aliyun鏡像加速器地址。執(zhí)行vim /etc/docker/daemon.json 下面命令,創(chuàng)建/修改文件,并設(shè)置地址。registry-mirrors: sudo systemctlsudo sys
7、temctldaemon-reloadrestart docker再次執(zhí)行dockull tomcat , 就會發(fā)現(xiàn)速度快了很多。Docker的整體架構(gòu)Docker cnt和Docker daemon(守護進程)進行交互。Docker daemon負責(zé)對docker container的創(chuàng)建,運行,構(gòu)造和分發(fā)等操作Docker cnt和Docker daemon可以運行在同一系統(tǒng)上,或者可以使用docker cnt連接docker daemonDocker cnt和Docker daemon使用REST API通信,通過UNIX套接字或網(wǎng)絡(luò)接口進行通信的容器和鏡像以下是給的定義:http/re
8、sour/what-containerA container is a standard unit of softwaret packages up code and all its dependenciesso the application runs quickly and reliably from one computing environment to another. A Docker container image is a lightweight, standalone, executable package of softwaret includes everything n
9、eeded to run an application: code, runtime, system tools, systemlibraries and settings.容器是打包代碼以及所有相關(guān)依賴項的動到另外一個計算機環(huán)境去運行。標準單元,它可以使得應(yīng)用從一個計算機環(huán)境快速可靠的移Docker容器鏡像是一個輕巧的、獨立的、可執(zhí)行的包,它包含了運行應(yīng)用程序所需要的一切要素,如:代碼、運行環(huán)境、系統(tǒng)工具、系統(tǒng)庫以及環(huán)境。容器和鏡像的關(guān)系簡單來說可以這樣去理解:一個包通過docker 構(gòu)建之后成為一個image,而這個image在Docker Engine上運行時就變成了容器。每個容器都是相
10、互看作是一個建議版的Linux運行環(huán)境,Docker就是利用容器來運行應(yīng)用的。鏡像的的,可以簡單的把容器docker的鏡像實際上是由一層一層的文件系統(tǒng)組成,這種層級的文件系統(tǒng)叫UnionFS(聯(lián)合文件系統(tǒng))。它是一種分層、輕量級并且高性能的文件系統(tǒng),它支持文件系統(tǒng)的修改作為一次提交來一層一層的疊加。前面資料講過,Docker容器鏡像包含了運行該應(yīng)用程序所需要的一切統(tǒng)工具、系統(tǒng)庫,它的組成形態(tài)如下圖所示。需要注意的是,這些層都是只讀,無法編輯。,如代碼、運行環(huán)境、系其中,操作系統(tǒng)就是一個基礎(chǔ)鏡像,所謂的基礎(chǔ)鏡像就是沒有父級鏡像。鏡像分層demo演示接下來,為了更好的說像分層結(jié)構(gòu),我寫一個Demo
11、給大家看一下創(chuàng)建一個Dockerle# 指明當前要構(gòu)建的鏡像所繼承的基礎(chǔ)鏡像FROM java:8 # 設(shè)置工作目錄WORKDIR# 把COPY/appo.java拷貝到工作目錄 o.java /app# docker鏡像編譯時出發(fā)的動作,它會在當前鏡像上執(zhí)行指定命令并形成一個新的層RUN javac,o.java# docker run執(zhí)行時,會執(zhí)行這個命令ENTRYPOjava,o編寫一個o.java,其中while循環(huán)是為了讓容器不結(jié)束public classpublic soic void main(String args)System.out.pr while(true)ln(o);
12、執(zhí)行o-image . 具體的語法為docker build optionsPATH|URL-t 表示設(shè)置鏡像的名字以及. 表示dockerle的路徑,一般是name:tag構(gòu)建成功之后,通過docker images 就可以看到創(chuàng)建好的鏡像o-image 運行這個鏡像運行之后由于設(shè)置了死循環(huán),所以入到容器層??梢酝ㄟ^dockerexec -it containerId /bin/bash 進構(gòu)建過程首先FROM java:8表示當前鏡像使用的基礎(chǔ)鏡像層,然后執(zhí)行RUN,執(zhí)行RUN命令都是新建一個層,這一層用來編譯WORKDIR,所以在構(gòu)建鏡像的每一層都會存在這個工作目錄。最終通過docker
13、 run運行,那么在鏡像最上層會增加一個容器層,o.java,而由于前面設(shè)置了可以通過容器層來鏡像??梢詫懙娜萜鬟@時可能就有人會問了:如果多個容器共份基礎(chǔ)鏡像,當某個容器修改了基礎(chǔ)鏡像的內(nèi)容,比如/etc 下的文件,這時其他容器的 /etc 是否也會被修改?是不會!原因是對于鏡像來說,它是只讀的,也就是你無法去修改鏡像。那有同學(xué)又有疑問了,老師,你前面安裝tomcat的時候,不是修改了tomcat這個鏡像里面的webapp目錄嗎?實際上,容器的本質(zhì)是鏡像在運行的時候,在鏡像最上層添加了一個可寫層,所有的修改都是在這一層來完成的,而這個修改并不會對基礎(chǔ)鏡像產(chǎn)生影響,修改容器中的數(shù)據(jù)實際上是先從鏡
14、像層把數(shù)據(jù)到容器層,然后修改之后會把修改之后的數(shù)據(jù)保存在容器層,鏡像層不會發(fā)生變化,這個其實就是UnionFS(聯(lián)合文件系統(tǒng))來實現(xiàn)的,所以它的影響只局限在當前的容器中。UnionFS的一個最主要的應(yīng)用是,把一張CD/DVD和一個硬盤目錄給聯(lián)合 mount在一起,然后,你就可以對這個只讀的CD/DVD上的文件進行修改(當然,修改的文件存于硬盤上的目錄里)。docker run gupaoedu:docker build -t gupaoedu:所有對容器的改動,無論添加、刪除、還是修改文件都只會發(fā)生在容器層中。只有容器層是可寫的,容器層下面的所有鏡像層都是只讀的。下面深入容器層的細節(jié)。鏡像層數(shù)
15、量可能會很多,所有鏡像層會聯(lián)合在一起組成一個的文件系統(tǒng)。如果不同層中有一個相同路徑的文件,比如 /a,上層的 /a 會覆蓋下層的 /a,也就是說用戶只能層中,用戶看到的是一個疊加之后的文件系統(tǒng)。1. 添加文件:在容器中創(chuàng)建文件時,新文件被添加到容器層中。到上層中的文件 /a。在容器2.文件:在容器中某個文件時,Docker 會從上往下依次在各鏡像層中查找此文件。一旦找到,立即將其到容器層,然后打開并讀入內(nèi)存。3. 修改文件:在容器中修改已存在的文件時,Docker 會從上往下依次在各鏡像層中查找此文件。一旦找到,立即將其到容器層,然后修改之。4. 刪除文件:在容器中刪除文件時,Docker 也
16、是從上往下依次在鏡像層中查找此文件。找到后,會在容器層中下此刪除操作。DockerleFROM指定當前鏡像的基礎(chǔ)鏡像,也就是當前新的鏡像是在指定的基礎(chǔ)鏡像之上運行。FROM ubuntu:14.04RUN在docker build期間執(zhí)行命令,在build過程中,每一個RUN命令都會新建一個鏡像層s:RUN #與終端s命令一樣exec:RUNR 可執(zhí)行文件,參數(shù)1,參數(shù)2RUN groupadd -r& useradd -r -gENV設(shè)置環(huán)境變量,可以通過$key來值,并且還可以通過 docker run -e key=value來設(shè)置環(huán)境變量的COPY/ADD將主機的文件解壓到鏡像內(nèi),如果
17、目錄不存在,會自動創(chuàng)建所需要的目錄,注意只是,不會提取和COPY docker-entrypo.sh /usr/local/bin/ADD和COPY的作用類似,只是ADD會對壓縮文件進行自動解壓WORKDIR指定鏡像的工作目錄,之后CMD令都是基于此目錄工作,若不存在則創(chuàng)建容器啟動的時候默認會執(zhí)行令,若有多個CMD命令,則最后一個生效。ENTRYPO功能和CMD類似,但是和CMD不同的是,docker run執(zhí)行的時候,可以在命令行參數(shù)中指定要運行的程序來覆蓋Dockerle中運行的指令。而ENTRYPO不同,它無法通過docker run令行參數(shù)來覆蓋ENTRYPO需要執(zhí)行的指令,而且命令行中的數(shù)據(jù)會被當做參數(shù)傳遞給ENTRYPO指令指定的程序。他們的相同點都是在docker運行的時候會默認觸發(fā)執(zhí)行令。EXE指定鏡像要的端口,啟動鏡像時,可以使用-p將該端口給宿主
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年綠色生態(tài)建筑農(nóng)民工勞動合同示范3篇
- 二零二五年度防盜門行業(yè)市場分析報告合同2篇
- 二零二五版加油站智能監(jiān)控與數(shù)據(jù)分析合同3篇
- 二零二五白云區(qū)觀白活力中心房地產(chǎn)合作開發(fā)投資框架合同2篇
- 二零二五年度智能家電產(chǎn)品研發(fā)與銷售合同3篇
- 二零二五版養(yǎng)殖企業(yè)與個體養(yǎng)牛戶合作合同3篇
- 二零二五版數(shù)據(jù)中心機房租賃及數(shù)據(jù)備份服務(wù)合同2篇
- 基于2025年度5G網(wǎng)絡(luò)技術(shù)研發(fā)合作合同2篇
- 二零二五版拌和站產(chǎn)品質(zhì)量追溯與售后服務(wù)合同2篇
- 二零二五版建筑工程土方中介合同糾紛調(diào)解機制3篇
- 第1課+中華文明的起源與早期國家+課件+-2023-2024學(xué)年高中歷史統(tǒng)編版2019必修中外歷史綱要上冊+
- 大廈物業(yè)管理保潔服務(wù)標準5篇
- 神經(jīng)內(nèi)科國家臨床重點??平ㄔO(shè)項目評分標準(試行)
- 業(yè)主委員會成員推薦表
- 城市設(shè)計與城市更新培訓(xùn)
- 2023年貴州省銅仁市中考數(shù)學(xué)真題試題含解析
- 世界衛(wèi)生組織生存質(zhì)量測量表(WHOQOL-BREF)
- 《葉圣陶先生二三事》第1第2課時示范公開課教學(xué)PPT課件【統(tǒng)編人教版七年級語文下冊】
- 某送電線路安全健康環(huán)境與文明施工監(jiān)理細則
- GB/T 28885-2012燃氣服務(wù)導(dǎo)則
- PEP-3心理教育量表-評估報告
評論
0/150
提交評論