版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、DOCKER第 1 章 Docker基礎(chǔ)1.1 docker簡介在這一部分我們主要講兩個方面: docker是什么、docker特點1.1.1 docker是什么docker是什么?docker的中文解釋是碼頭工人。解釋:Docker是一個開源的容器引擎,它基于LCX容器技術(shù),使用Go語言開發(fā)。源代碼托管在上,并遵從Apache2.0協(xié)議。Docker采用C/S架構(gòu),其可以輕松的為任何應(yīng)用創(chuàng)建一個輕量級的、可移植的、自給自足的容器。Docker就是一種快速解決生產(chǎn)問題的一種技術(shù),開發(fā),運行和部署應(yīng)用程序的開放管理平臺。開發(fā)運維能利用docker 開發(fā)和運行應(yīng)用程序能利用docker 部署和管理
2、應(yīng)用程序Docker的生活場景對比:單獨的理解一下容器:物理機(jī)虛擬機(jī)容器是Docker提供了在一個完全的環(huán)境中打包和運行應(yīng)用程序的能力,這個的環(huán)境被稱為容器。由于容器的性和安全性,因此可以在一個主機(jī)(宿主機(jī))上同時運行多個相互1.1.2為什么使用Docker的容器,互不干預(yù)。Docker使您能夠?qū)?yīng)用程序與基礎(chǔ)架構(gòu),以便您可以快速交付軟件。借助Docker,您可以像管理應(yīng)用程序一樣管理基礎(chǔ)架構(gòu)。通過利用Docker的方法快速進(jìn)行運輸,測試和部署代碼,您可以顯著縮短編寫代碼和在生產(chǎn)環(huán)境中運行代碼之間 的延遲。例如: 開發(fā)在本地編寫代碼,可以使用Docker同事進(jìn)行共享,實現(xiàn)協(xié)同工作。使用Dock
3、er開發(fā)完成程序,可以直接對應(yīng)用程序執(zhí)行自動和手動測試。當(dāng)開發(fā)證。發(fā)現(xiàn)錯誤或BUG時,可以直接在開發(fā)環(huán)境中修復(fù)后,并迅速將它們重新部署到測試環(huán)境進(jìn)試和驗利用Docker開發(fā)完成后,交付時,直接交付Docker,也就意味著交付完成。后續(xù)如果有提供修補(bǔ)程序或更新,需 要推送到生成環(huán)境運行起來,也是一樣的簡單。Docker主要解決的問題:保證程序運行環(huán)境的一致性;降低配置開發(fā)環(huán)境、生產(chǎn)環(huán)境的復(fù)雜度和成本; 實現(xiàn)程序的快速部署和分發(fā)。1.1.3Docker的架構(gòu)與結(jié)構(gòu)架構(gòu)圖動畫片七龍珠里面的膠囊1號膠囊啟動后的效果Docker是采用了(c/s)架構(gòu)模式的應(yīng)用程序Client dockerCLI :客戶
4、端docker命令行REST API : 一套介于客戶端與服務(wù)端的之間進(jìn)行通信并指示其執(zhí)行的接口Server docker daemon:服務(wù)端dacker守護(hù)進(jìn)程等待客戶端命令來執(zhí)行Docker的四大技術(shù)IMAGE-鏡像CONTAINER-容器DATA VOLUMES-數(shù)據(jù)卷NETWORK-網(wǎng)絡(luò)結(jié)構(gòu)圖Docker客戶端(Docker Client)Docker客戶端(Docker Client)是用戶與Docker進(jìn)行交互的最主要方式。當(dāng)在終端輸入docker命令時,對應(yīng)的就會在服務(wù)端產(chǎn)生對應(yīng)的作用,并把結(jié)果返回給客戶端。Docker Client除了連接本地服務(wù)端,通過更改或指定DOCKE
5、R_HOST連接服務(wù)端。Docker服務(wù)端(Docker Server)Docker Daemon其實就是Docker 的服務(wù)端。它負(fù)責(zé)(Docker Objects),如鏡像、容器、網(wǎng)絡(luò)、數(shù)據(jù)卷等Docker RegistriesDocker API請求(如Docker Client)并管理Docker對象俗稱Docker倉庫,專門用于鏡像的云服務(wù)環(huán)境.Docker Hub就是一個公有的存放鏡像的地方,類似的倉庫。Docker 對象(Docker Objects)鏡像:一個Docker的可執(zhí)行文件,其中包括運行應(yīng)用程序所需的所有代碼內(nèi)容、依賴庫、環(huán)境變量和配置文件 等。容器:鏡像被運行起來后
6、的實例。網(wǎng)絡(luò):外部或者容器間如何互相的網(wǎng)絡(luò)方式,如host模式、bridge模式。數(shù)據(jù)卷:容器與宿主機(jī)之間、容器與容器之間共享方式,類似虛擬機(jī)與主機(jī)之間的共享文件目錄。1.1.4資料:Docker 官網(wǎng):httDocker 源碼: /docker/dockerDocker 英文文檔Docker 中文文檔:https/: /latest/1.1.4docker特點三大理念: 構(gòu)建:龍珠里的膠囊,將你需要的場景構(gòu)建好,裝在一個小膠囊里運輸:隨身攜帶著房子、車子等,非常方便運行:只需要你輕輕按一下膠囊,找個合適的地方一放,就ok了優(yōu)點: 多: 適用場景多快: 環(huán)境部署快、更新快好: 好多人在用省:
7、省錢省力省人工缺點: 太膩歪人: 依賴操作系統(tǒng)不善不善: 依賴網(wǎng)絡(luò):U盾等場景不能用1.2 docker快速入門1.2.1docker歷程:自2013年出現(xiàn)以來,發(fā)展勢頭很猛,現(xiàn)在可說是風(fēng)靡全球。docker的第一版為0.1.0 發(fā)布于2013年03月23日Docker2017年前的版本號是1.13.1發(fā)布于2017年02月08日Docker從1.13.x版本開始,版本分為企業(yè)版EE和社區(qū)版CE,版本號也改為按照時間線來發(fā)布,比如17.03就是2017年3月,有點類似于ubuntu的版本發(fā)布方式。 企業(yè)版自然會提供一些額外的服務(wù),當(dāng)然肯定也是的。 企業(yè)版說明https /2017/03/doc
8、ker-enterprise-edition/ 社區(qū)版分為stable和edge兩種發(fā)布方式。stable版本是季度發(fā)布方式,比如17.03, 17.06, 17.09edge版本是月份發(fā)布方式, 比如17.03, 17.04.注:Stable:gives you reliable updates every quarter (穩(wěn)定:給你可靠的每季度更新一次)Edge:gives you new features every month(優(yōu)勢:每個月給你新特性)1.2.2要求為什么用ubuntu學(xué)docker圖片來源:https/engine/installation/#serverdocke
9、r要求的ubuntu環(huán)境ubuntu地址:http/download/desktopubuntu主機(jī)環(huán)境需求執(zhí)行效果1.2.3 部署docker官網(wǎng)參考:1 #執(zhí)行命令2 $ uname -a3 $ ls -l /sys/class/misc/device-mapperhttps/engine/installation/linux/docker-ce/ubuntu/#upgrade-docker-after-using-the-conv enience-script安裝步驟網(wǎng)卡區(qū)別:安裝前:只有ens33和lo網(wǎng)卡1 #安裝基本軟件2 $ sudo apt-get update3 $ sudo
10、 apt-get install apt-transport-https ca-s curl software- properties-common lrzsz -y4 #使用推薦源不推薦#5 $ sudo curl -fsSL https:/d/linux/ubuntu/gpg | sudo apt-key add -6 add-apt-repository "deb arch=amd64 https:/d/linux/ubuntu$(lsb_release -cs) stable"7 #使用阿里云的源推薦8 $ sudo curl -fsSL https:/m/dock
11、er-ce/linux/ubuntu/gpg | sudo apt- key add -9 $ sudo add-apt-repository "deb arch=amd64 https:/m/docker- ce/linux/ubuntu $(lsb_release -cs) stable"1011 #軟件源升級12 $ sudo apt-get update1314 #安裝docker15 $ sudo apt-get install docker-ce -y1617 #注:18 #可以指定版本安裝docker:19 $ sudo apt-get install doc
12、ker-ce=<VERSION> -y2021 #查看支持的docker版本22 $ sudo apt-cache madison docker-ce23 #測試docker24 docker version安裝后:docker啟動后,多出來了docker0網(wǎng)卡,網(wǎng)卡地址1.2.4 docker在國內(nèi)使用docker的daocloud的方法進(jìn)行方法:鏡像源,會因為網(wǎng)絡(luò)的原因,造成無法,或者一直處于超時。所以我們使用配置。文檔:,登錄 daocloud 賬戶點擊右上角的在新窗口處會顯示一條命令,#我們執(zhí)行這條命令curl -sSL12| sh -s34567891
13、01112131415161718#修改daemon.json文件,增加, "insecure-registries": #到大括號后# cat /etc/docker/daemon.json"registry-mirrors": "", "insecure-registries":#注意:#docker cloud#重啟docker的默認(rèn)內(nèi)容是少了一條配置,所以我們要編輯文件把后面的內(nèi)容補(bǔ)全systemctl restart docker1.2.5 docker 其他簡介docker的基本命令格式:刪除docke
14、r命令:docker基本目錄簡介:1 /etc/docker/#docker的認(rèn)證目錄2 /var/lib/docker/#docker的應(yīng)用目錄1 $ sudo apt-get purge docker-ce -y2 $ sudo rm -rf /etc/docker3 $ sudo rm -rf /var/lib/docker/1 #基本格式2 systemctl 參數(shù) docker3 #參數(shù)詳解:4 start開啟服務(wù)5 stop關(guān)閉6 restart重啟7 status狀態(tài)docker常見bug:背景因為使用的是sudo安裝docker,所以會導(dǎo)致一個問題。以普通用戶登錄的狀況下,在使
15、用docker images時必須添加sudo,那么如何讓docker免sudo依然可用呢?理清問題當(dāng)以普通用戶去使用docker命令時,出現(xiàn)以下錯誤:可以看都,最后告知我們時權(quán)限的問題。那么在linux文件權(quán)限有三個數(shù)據(jù)左右drwxrwxrwx,其中第一為d代表該文件是一個文件夾前三位、中三位、后三位分別代表這屬主權(quán)限、屬組權(quán)限、其他限。上圖是報錯文件的權(quán)限展示,可以看到其屬主為root,權(quán)限為rw,可讀可寫;其屬組為docker,權(quán)限為rw,可讀可寫。如果要當(dāng)前用戶可直接用戶組就可以了方法1:一勞永逸該文件,那么我們就為docker.sock 添加一個其他用戶可讀寫權(quán)限 或者添加1個方法2
16、:方法3:每條命令前面加上sudo1 #每次啟動docker或者重啟docker的之后2 $cd /var/run3 $sudo chmod 666 docker.sock1 #如果還沒有 docker group 就添加一個:2 $sudo groupadd docker3 #將用戶加入該 group 內(nèi)。然后并重新登錄就生效啦。4 $sudo gpasswd -a $USER docker5 #重啟 docker 服務(wù)6 $systemctl restart docker7 #切換當(dāng)前會話到新 group 或者重啟 X 會話8 $newgrp - docker9 #注意:最后一步是必須的,
17、否則因為 groups 命令獲取到的是緩存的組信息,剛添加的組信息未能生效,10 #所以 docker images 執(zhí)行時同樣有錯。1 Got permission denied while trying to connect to the Docker daemon socket at unix:/var/run/docker.sock: Post16.04&tag=: dial unix /var/run/docker.sock: connect: permission denied.AVI第 2 章 Docker技術(shù)Docker的技術(shù)內(nèi)容很多,我們學(xué)習(xí)則從以下四個方面來介紹Do
18、cker的技術(shù) 鏡像、容器、數(shù)據(jù)、網(wǎng)絡(luò)2.1 docker鏡像管理2.1.1 鏡像簡介Docker鏡像是什么? 鏡像是一個Docker的可執(zhí)行文件,其中包括運行應(yīng)用程序所需的所有代碼內(nèi)容、依賴庫、環(huán)境變量和配置文件等。 通過鏡像可以創(chuàng)建一個或多個容器。2.1.2 搜索、查看、獲取搜索鏡像獲取鏡像查看鏡像#作用:列出本地鏡像#命令格式:docker images 鏡像名稱 docker image ls 鏡像名稱123451 #作用:2 倉庫(如Docker Hub)中的鏡像3 #命令格式:4 docker pull 鏡像名稱5 #命令演示:6 $ docker pull ubuntu7 $ d
19、ocker pull nginx 89 #注釋:10 #獲取的鏡像在哪里?11 #/var/lib/docker 目錄下1213 #由于權(quán)限的原因我們需要切換root用戶14 #那我們首先要重設(shè)置root用戶的:15 :$ sudo passwd root16 #這樣就可以設(shè)置root用戶的了。17 #之后就可以自由的切換到root用戶了18 :$ su19 #輸入root用戶的即可。2021 #當(dāng)然,如果想從root用戶切換回一般用戶,則可使用 su -val(一般用戶名)22 #而當(dāng)你再次切回到root用戶,則只需要鍵入exit,再次輸入exit則回到最初的用戶下23 #操作下面的文件可以
20、查看相關(guān)的鏡像信息24 :$ vim /var/lib/docker/image/overlay2/repositories.json1 #作用2 搜索Docker Hub(鏡像倉庫)上的鏡像3 #命令格式:4 docker search 鏡像名稱5 #命令演示:6 $ docker search ubuntu7 #NAME:名稱8 #DESCRIPTION:基本功能描述9 #STARS:次數(shù)10 #OFFICIAL:11 #AUTOMATED:自動的運行2.1.3 重命名、刪除鏡像重命名刪除鏡像2.1.4 導(dǎo)出、導(dǎo)入導(dǎo)出鏡像將已經(jīng)好的鏡像,導(dǎo)出到本地,以備后用。1 #作用:2 將本地的一個或
21、多個鏡像刪除3 #命令格式:4 docker rmi 命令參數(shù)鏡像ID5 docker rmi 命令參數(shù)鏡像名稱:鏡像版本6 docker image rm 命令參數(shù)鏡像7 #命令演示:8 $docker rmi 3fa822599e109 $docker rmi mysql:latest10 #注意:11 如果一個image_id存在多個名稱,那么應(yīng)該使用 名稱:版本 的格式刪除鏡像12 #命令參數(shù)(OPTIONS):13 -f, -force強(qiáng)制刪除1 #作用:2 對本地鏡像的NAME、TAG進(jìn)行重命名,并新產(chǎn)生一個命名后鏡像3 #命令格式:4 docker tag 老鏡像名稱:老鏡像版本
22、新鏡像名稱:新鏡像版本5 #命令演示:6 $ docker tag nginx:latest panda-nginx:v1.067891011121314#命令演示:$ docker images#鏡像的ID唯一標(biāo)識了鏡像,如果ID相同,說明是同一鏡像。TAG信息來區(qū)分不同版本,如果不指定具體標(biāo)記, 默認(rèn)使用latest標(biāo)記信息#docker images -a 列出所有的本地的images(包括已刪除的鏡像) #REPOSITORY:鏡像的名稱#TAG :鏡像的版本#IMAGE ID:鏡像id #CREATED:鏡像是什么時候創(chuàng)建的#SIZE:大小導(dǎo)入鏡像2.1.5 歷史、創(chuàng)建查看鏡像歷史1
23、 #作用:2 將save命令打包的鏡像導(dǎo)入本地鏡像庫中3 #導(dǎo)入鏡像命令格式:4 $ docker load 命令參數(shù)被導(dǎo)入鏡像壓縮文件的名稱5 $ docker load < 被導(dǎo)入鏡像壓縮文件的名稱6 $ docker load -input 被導(dǎo)入鏡像壓縮文件的名稱7 #命令參數(shù)(OPTIONS):8 -i, -input string指定要打入的文件,如沒有指定,默認(rèn)是STDIN910 #為了更好的演示效果,我們先將nginx的鏡像刪除掉11 docker rmi nginx:v1.012 docker rmi nginx 1314 #導(dǎo)入鏡像文件:15 $ docker loa
24、d < nginx.tar16 #注意:17 如果發(fā)現(xiàn)導(dǎo)入的時候沒限需要使用chmod命令修改鏡像文件的權(quán)限1 #作用:2 將本地的一個或多個鏡像打包保存成本地tar文件3 #命令格式:4 docker save 命令參數(shù)導(dǎo)出鏡像名稱本地鏡像鏡像5 #命令參數(shù)(OPTIONS):6 -o, -output string指定寫入的文件名和路徑7 #導(dǎo)出鏡像8 :$ docker save -o nginx.tar nginx鏡像詳細(xì)信息根據(jù)模板創(chuàng)建鏡像2.1.6總結(jié)12345678#登錄系統(tǒng)模板鏡像:#找到一個鏡像模板進(jìn)行,比如說ubuntu-16.04-x86_64.tar.gz,地址為
25、:#命令格式:cat 模板文件名.tar | docker import - 自定義鏡像名 #演示效果:$ cat ubuntu-16.04-x86_64.tar.gz | docker import - ubuntu-mini1 #作用:2 查看本地一個或多個鏡像的詳細(xì)信息3 #命令格式:4 $ docker image inspect 命令參數(shù) 鏡像名稱:鏡像版本5 $ docker inspect 命令參數(shù) 鏡像ID6 #查看鏡像詳細(xì)信息:7 $ docker inspect nginx1 #作用:2 查看本地一個鏡像的歷史(歷史分層)信息3 #查看鏡像命令格式:4 docker his
26、tory 鏡像名稱:鏡像版本5 docker history 鏡像ID6 #我們獲取到一個鏡像,想知道他默認(rèn)啟動了哪些命令或者都封裝了哪些系統(tǒng)層,那么我們可以使用docker history這條命令來獲取我們想要的信息7 $ docker history sswang-nginx:v1.089 #IMAGE:編號10 #CREATED:創(chuàng)建的11 #CREATED BY :基于那些命令創(chuàng)建的12 #SIZE:大小13 #COMMENT:評論2.2 容器管理docker容器技術(shù)指Docker是一個由GO語言寫的程序運行的“容器”(Linux containers, LXCs)containers
27、的中文解釋是集裝箱。Docker則實現(xiàn)了一種應(yīng)用程序級別的到操作程序運行的“容器”上來。,它改變我們基本的開發(fā)、操作單元,由直接操作虛擬主機(jī)(VM),轉(zhuǎn)換2.2.1 容器簡介容器是什么?容器(Container):容器是一種輕量級、可移植、并將應(yīng)用程序進(jìn)行的打包的技術(shù),使應(yīng)用程序可以在幾乎任何 地方以相同的方式運行Docker將鏡像文件運行起來后,產(chǎn)生的對象就是容器。容器相當(dāng)于是鏡像運行起來的一個實例。 容器具備一定的生命周期。 另外,可以借助docker ps命令查看運行的容器,如同在linux上利用ps命令查看運行著的進(jìn)程那樣。我們就可以理解容器就是被封裝起來的進(jìn)程操作,只不過現(xiàn)在的進(jìn)程可
28、以簡單也可以復(fù)雜,復(fù)雜的話可以運行1個操作 系統(tǒng).簡單的話可以運行1個回顯字符串.容器與虛擬機(jī)的相同點 容器和虛擬機(jī)一樣,都會對物理硬件進(jìn)行共享使用。 容器和虛擬機(jī)的生命周期比較相似(創(chuàng)建、運行、暫停、關(guān)閉等等)。 容器中或虛擬機(jī)中都可以安裝各種應(yīng)用,如redis、mysql、nginx等。也就是說,在容器中的操作,如同在一個虛 擬機(jī)(操作系統(tǒng))中操作一樣。 同虛擬機(jī)一樣,容器創(chuàng)建后,會容器與虛擬機(jī)的不同點在宿主機(jī)上:linux上位于/var/lib/docker/containers下注意:容器并不是虛擬機(jī),但它們有很多相似的地方 虛擬機(jī)的創(chuàng)建、啟動和關(guān)閉都是基于一個完整的操作系統(tǒng)。一個虛擬
29、機(jī)就是一個完整的操作系統(tǒng)。而容器直接運 行在宿主機(jī)的內(nèi)核上,其本質(zhì)上以一系列進(jìn)程的結(jié)合。 容器是輕量級的,虛擬機(jī)是重量級的。首先容器不需要額外的來管理,虛擬機(jī)額外的性能消耗;其次創(chuàng)建、啟動或關(guān)閉容器,如同創(chuàng)建、啟動或者關(guān)閉進(jìn)程那么輕松,而創(chuàng)建、啟動、關(guān)閉一個操作系統(tǒng)就沒那么 方便了。 也因此,意味著在給定的硬件上能運行數(shù)量的容器,甚至可以直接把Docker運行在虛擬機(jī)上。2.2.2 查看、創(chuàng)建、啟動查看容器創(chuàng)建待啟動容器#作用:利用鏡像創(chuàng)建出一個Created #命令格式:123狀態(tài)的待啟動容器1 #作用2 顯示docker容器列表3 #命令格式:4 docker ps5 #命令演示:6 $
30、docker ps7 #CONTAINER ID 容器ID8 #IMAGE 基于那個鏡像9 #COMMAND 運行鏡像使用了哪些命令?10 #CREATED多久前創(chuàng)建時間11 #STATUS開啟還是關(guān)閉12 #PORTS端13 #NAMES容器名稱默認(rèn)是隨機(jī)的14 #注意:15 管理docker容器可以通過名稱,也可以通過ID16 ps是顯示正在運行的容器, -a是顯示所有運行過的容器,包括已經(jīng)不運行的容器4567891011121314docker create OPTIONS IMAGE COMMAND ARG.docker create 參數(shù)命令 依賴鏡像 容器內(nèi)命令 命令參數(shù) #命令參
31、數(shù)(OPTIONS):查看分配一個偽TTY,也就是分配虛擬終端即使沒有連接,也要保持STDIN打開為容器起名,如果沒有指定將會隨機(jī)產(chǎn)生一個名稱-t,-i,-tty-interactive-name#命令參數(shù)(COMMANDARG):COMMAND 表示容器啟動后,需要在容器中執(zhí)行令,如ps、ls 等命令A(yù)RG 表示執(zhí)行 COMMAND 時需要提供的一些參數(shù),如ps 命令的#創(chuàng)建容器(附上ls命令和a參數(shù))aux、ls命令的-a等等docker create -it-nameubuntu-1ubuntuls-a啟動容器啟動容器有三種方式1、啟動待啟動或已關(guān)閉容器2、基于鏡像新建一個容器并啟動3、
32、守護(hù)進(jìn)程方式啟動docker啟動容器創(chuàng)建新容器并啟動123456789101112131415#作用:利用鏡像創(chuàng)建并啟動一個容器#命令格式:docker run 命令參數(shù) 鏡像名稱執(zhí)行令 命令參數(shù)(OPTIONS):-t, -tty分配一個偽TTY,也就是分配虛擬終端-i, -interactive即使沒有連接,也要保持STDIN打開-name為容器起名,如果沒有指定將會隨機(jī)產(chǎn)生一個名稱-d, -detach在運行容器并打印出容器ID-rm當(dāng)容器運行后,自動刪除容器#啟動一個鏡像輸出內(nèi)容并刪除容器$ docker run -rm -name nginx1nginx /bin/echo &quo
33、t;hello docker"1 #作用:2 將一個或多個處于創(chuàng)建狀態(tài)或關(guān)閉狀態(tài)的容器啟動起來34 #命令格式:5 docker start 容器名稱或容器ID6 #命令參數(shù)(OPTIONS):7 -a, -attach將當(dāng)前shell的 STDOUT/STDERR 連接到容器上8 -i, -interactive將當(dāng)前shell的 STDIN連接到容器上9 #啟動上面創(chuàng)建的容器10 docker start -a ubuntu-1守護(hù)進(jìn)程方式啟動容器<常用的方式>的時候,需要讓Docker容器在以守護(hù)形式運行。此時可以通過添加-d參數(shù)來實現(xiàn)2.2.3暫停與取消暫停與重啟
34、容器暫停容器取消暫停重啟1 #作用:2 重啟一個或多個處于運行狀態(tài)、暫停狀態(tài)、關(guān)閉狀態(tài)或者新建狀態(tài)的容器3 該命令相當(dāng)于stop和start命令的結(jié)合4 #命令格式:5 docker restart 容器名稱或容器ID6 #命令參數(shù)(OPTIONS):7 -t, -time int重啟前,等待的時間,秒(默認(rèn) 10s)89 #恢復(fù)容器10docker restart -t 20 a229eabf1f321 #作用:2 取消一個或多個處于暫停狀態(tài)的容器,恢復(fù)運行3 #命令格式:4 docker unpause 容器名稱或容器ID5 #恢復(fù)容器6 docker unpause a229eabf1f
35、321 #作用:2 暫停一個或多個處于運行狀態(tài)的容器3 #命令格式:4 docker pause 容器名稱或容器ID5 #暫停容器6 docker pause a229eabf1f32 71 #命令格式:2 docker run -d image_name command .3 #守護(hù)進(jìn)程方式啟動容器:4 :$ docker run -d nginx1617#注意:docker run 其實 是兩個命令的集合體 docker create + docker start2.2.4 關(guān)閉、終止、刪除關(guān)閉容器在生產(chǎn)中,我們會以為臨時情況,要關(guān)閉某些容器,我們使用 stop 命令來關(guān)閉某個容器終止容器
36、刪除容器刪除容器有三種方法: 正常刪除 - 刪除已關(guān)閉的強(qiáng)制刪除 - 刪除正在運行的強(qiáng)制批量刪除 - 刪除全部的容器正常刪除容器1 #作用:2 刪除一個或者多個容器34 #命令格式:5 $ docker rm 容器名稱或容器ID6 #刪除已關(guān)閉的容器:7 $ docker rm 1a5f6a0c94431 #作用:2 強(qiáng)制并立即關(guān)閉一個或多個處于暫停狀態(tài)或者運行狀態(tài)的容器3 #命令格式:4 docker kill 容器名稱或容器ID5 #終止容器6 $ docker kill 8005c40a1d161 #作用:2 延遲關(guān)閉一個或多個處于暫停狀態(tài)或者運行狀態(tài)的容器3 #命令格式:4 docke
37、r stop 容器名稱或容器ID56 #關(guān)閉容器:7 $ docker stop 8005c40a1d16強(qiáng)制刪除運行容器1 #作用:2 強(qiáng)制刪除一個或者多個容器3 #命令格式:4 docker rm -f 容器名稱或容器ID5 #刪除正在運行的容器6 $ docker rm -f 8005c40a1d161 Error response from daemon: You cannot remove a running container c7f5e7fe5aca00e0cb987d486dab3502ac93d7180016cfae9ddcc64e56149fc9. Stop the con
38、tainer before attempting removal or force remove2 錯誤響應(yīng)守護(hù)進(jìn)程:你不能刪除一個容器c7f5e7fe5aca00e0cb987d486dab3502ac93d7180016cfae9ddcc64e56149fc9運行。在嘗試拆卸或強(qiáng)制拆 卸之前,先停止容器。拓展批量關(guān)閉容器1 #作用:2 批量強(qiáng)制刪除一個或者多個容器3 #命令格式:4 $ docker rm -f $(docker ps -a -q)5 #按照執(zhí)行順序$(), 獲取到現(xiàn)在容器的id然后進(jìn)行刪除2.2.5 進(jìn)入、進(jìn)入容器我們學(xué)習(xí)三種方法:1、創(chuàng)建容器的同時進(jìn)入容器 2、手工方式
39、進(jìn)入容器 3、生產(chǎn)方式進(jìn)入容器創(chuàng)建并進(jìn)入容器容器:手工方式進(jìn)入容器生產(chǎn)方式進(jìn)入容器1 #命令格式:2 docker exec -it 容器id /bin/bash3 #效果演示:4 $ docker exec -it d74fff341687 /bin/bash1 #方法一:2 exit3 #方法二:4 Ctrl + D1 #命令格式:2 docker run -name container_name -it docker_image /bin/bash34 #命令演示:5 $ docker run -it -name panda-nginx nginx /bin/bash6 #進(jìn)入容器后7
40、root7c5a24a68f96:/# echo "hello world"8 hello world 910 root7c5a24a68f96:/# exit11 exit 1213 #docker 容器啟動命令參數(shù)詳解:14 #-name:給容器定義一個名稱15 #-i:則讓容器的標(biāo)準(zhǔn)輸入保持打開。16 #-t:讓docker分配一個偽終端,并綁定到容器的標(biāo)準(zhǔn)輸入上17 #/bin/bash:執(zhí)行一個命令我們生產(chǎn)中常用的進(jìn)入容器方法是使用,內(nèi)容如下直接執(zhí)行的話是沒有執(zhí)行權(quán)限的所以需要賦值權(quán)限注意:2.2.6 基于容器創(chuàng)建鏡像方式一:12345678#命令格式:docke
41、r commit -m '改動信息' -a "作者信息" container_idnew_image:tag #命令演示:#進(jìn)入一個容器,創(chuàng)建文件后并:$ ./docker_in.sh d74fff341687$ mkdir /hello$ mkdir /world$ ls當(dāng)拷貝到linux下的時候會出現(xiàn)-bash: ./docker_in.sh: /bin/bashM: 解釋器錯誤: 沒有那個文件或目錄這個問題大多數(shù)是因為你的 文件在windows下編輯過。windows下,每一行的結(jié)尾是nr,而在linux下文件的結(jié)尾是n,那么你在windows下編輯過
42、的文件在linux下打開看的時候每一行的結(jié)尾就會多出來一個字 符r,用cat -A docker_in.sh時你可以看到這個r字符被顯示為M,這時候只需要刪除這個字符就可以了??梢允褂妹?sed -i 's/r$/' docker_in.sh1 #賦權(quán)執(zhí)行2 $ chmod +x docker_in.sh3 #進(jìn)入指定的容器,并測試4 $ ./docker_in.sh b3fbcba852fd1 #!/bin/bash 23 #定義進(jìn)入倉庫函數(shù)4 docker_in()5 NAME_ID=$16 PID=$(docker inspect -format .State.Pid
43、$NAME_ID)7 nsenter -target $PID -mount -uts -ipc -net -pid 8 9 docker_in $19101112131415161718$ exit#創(chuàng)建一個鏡像:$ docker commit -m 'mkdir /hello /world #查看鏡像:$ docker images#啟動一個容器'-a"panda"d74fff341687nginx:v0.2$ docker run -itd nginx:v0.2#進(jìn)入容器進(jìn)行查看/bin/bash$ ./docker_in.sh$ lsae63ab29
44、9a84方式二:2.2.7 日志、信息、端口、重命名查看容器運行日志1 #命令格式:2 docker logs 容器id3 #命令效果:4 $ docker logs 7c5a24a68f96導(dǎo)出(export)導(dǎo)入(import)與保存(save)加載(load)的恩怨情仇import與load的區(qū)別:import可以重新指定鏡像的名字,docker load不可以export 與 保存 save 的區(qū)別:1、export導(dǎo)出的鏡像文件大小,小于 save保存的鏡像。2、export 導(dǎo)出(import導(dǎo)入)是根據(jù)容器拿到的鏡像,再導(dǎo)入時會丟失鏡像所有的歷史。1 #命令格式:2 docker
45、 export 容器id > 模板文件名.tar3 #命令演示:4 #創(chuàng)建鏡像:5 $ docker export ae63ab299a84 > nginx.tar6 #導(dǎo)入鏡像:7 $ cat nginx.tar | docker import - panda-test查看容器詳細(xì)信息查看容器端口信息容器重命名總結(jié)1 #作用:2 修改容器的名稱3 #命令格式:4 docker rename 容器id或容器名稱 容器新名稱5 #命令效果:6 $ docker rename 930f29ccdf8a u1 71 #命令格式:2 docker port 容器id3 #命令效果:4 $
46、docker port 930f29ccdf8a5 #沒有效果沒有和宿主機(jī)關(guān)聯(lián)1 #命令格式:2 docker inspect 容器id3 #命令效果:4 查看容器全部信息:5 $ docker inspect 930f29ccdf8a6 查看容器網(wǎng)絡(luò)信息:7 $ docker inspect -format='range .NetworkSettings.Networks.IPAddressend' 930f29ccdf8a2.3 數(shù)據(jù)管理生產(chǎn)環(huán)境使用Docker的過程中,往往需要對數(shù)據(jù)進(jìn)行持久化保存,或者需要需要怎么要的操作呢?容器之間進(jìn)行數(shù)據(jù)共享,那我們就是:數(shù)據(jù)卷(Da
47、ta Volumes)和數(shù)據(jù)卷容器(Data Volume Containers)2.3.1 數(shù)據(jù)卷簡介什么是數(shù)據(jù)卷?就是將宿主機(jī)的某個目錄,到容器中,作為數(shù)據(jù)的目錄,我們就可以在宿主機(jī)對數(shù)據(jù)進(jìn)行機(jī)環(huán)境數(shù)據(jù)卷(Data Volumes):容器內(nèi)數(shù)據(jù)直接數(shù)據(jù)卷特性到本1、數(shù)據(jù)卷可以在容器之間共享和重用,本地與容器間傳遞數(shù)據(jù)更高效;2、對數(shù)據(jù)卷的修改會立馬有效,容器內(nèi)部與本地目錄均可;3、對數(shù)據(jù)卷的更新,影響鏡像,對數(shù)據(jù)與應(yīng)用進(jìn)行了解耦操作;4、卷會一直存在,直到?jīng)]有容器使用。docker 數(shù)據(jù)卷命令詳解我們可以使用命令 docker run 用來創(chuàng)建容器,可以在使用docker run 命令時添
48、加 -v 參數(shù),就可以創(chuàng)建并掛載一個到多個數(shù)據(jù)卷到當(dāng)前運行的容器中。 -v 參數(shù)的作用是將宿主機(jī)的一個目錄作為容器的數(shù)據(jù)卷掛載到docker容器中,使宿主機(jī)和容器之間可以共享一個 目錄,如果本地路徑不存在,Docker也會自動創(chuàng)建。2.3.2 數(shù)據(jù)卷實踐關(guān)于數(shù)據(jù)卷的管理我們從兩個方面來說:1、目錄2、普通文件數(shù)據(jù)卷實踐 之 目錄數(shù)據(jù)卷實踐 之 文件不推薦1 #命令格式:2 docker run -itd -name 容器名字 -v 宿主機(jī)目錄:容器目錄鏡像名稱 命令(可選)34 #命令演示:5 #創(chuàng)建測試文件:6 $ echo "file1" > tmp/file1.
49、txt7 #啟動一個容器,掛載數(shù)據(jù)卷:8 $ docker run -itd -name test1 -v /home/itcast/tmp/:/test1/ nginx9 #注意宿主機(jī)目錄需要絕對路徑10 #測試效果11 $ docker exec -it a53c61c77 /bin/bash12 roota53c61c77bde:/# cat /test1/file1.txt13 file11 :$ docker run -help 23 -v, -volume listBind mount a volume (default )4 掛載一個數(shù)據(jù)卷,默認(rèn)為空注意:2.3.3 數(shù)據(jù)卷容器簡
50、介什么是數(shù)據(jù)卷容器? 需要在多個容器之間共享一些持續(xù)更新的數(shù)據(jù),最簡單的方式是使用數(shù)據(jù)卷容器。數(shù)據(jù)卷容器也是一個容器,但是它的目的是專門用來提供數(shù)據(jù)卷供其他容器掛載。數(shù)據(jù)卷容器(Data Volume Containers):使用特定容器維護(hù)數(shù)據(jù)卷簡單點:數(shù)據(jù)卷容器就是為其他容器提供數(shù)據(jù)交互docker 數(shù)據(jù)卷命令詳解的容器數(shù)據(jù)卷容器操作流程如果使用數(shù)據(jù)卷容器,在多個容器間共享數(shù)據(jù),并1、創(chuàng)建數(shù)據(jù)卷容器2、其他容器掛載數(shù)據(jù)卷容器保存這些數(shù)據(jù),需要有一個規(guī)范的流程才能做得到:1 :$ docker run -help2 。3 -v, -volumes-from listMount volumes
51、 from the specified container(s) (default)4 #從指定的容器掛載卷,默認(rèn)為空1 1、Docker掛載數(shù)據(jù)卷的默認(rèn)讀寫權(quán)限(rw),用戶可以通過ro設(shè)置為只讀2 格式:宿主機(jī)文件:容器文件:ro3 2、如果直接掛載一個文件到容器,使用文件工具進(jìn)行編輯,可能會造成文件的改變,從Docker1.1.0起,這會導(dǎo)致 報錯誤信息。所以推薦的方式是直接掛在文件所在的目錄。1 #命令格式:2 docker run -itd -name 容器名字 -v 宿主機(jī)文件:容器文件鏡像名稱 命令(可選)34 #命令演示:5 #創(chuàng)建測試文件6 $ echo "file
52、1" > /tmp/file1.txt7 #啟動一個容器,掛載數(shù)據(jù)卷8 $ docker run -itd -name test2 -v /home/itcast/tmp/file1.txt:/nihao/nihao.sh nginx910 #測試效果11 :$ docker exec -it 84c37743 /bin/bash12 root84c37743d339:/# cat /nihao/nihao.sh13 file1注意: 數(shù)據(jù)卷容器自身并不需要啟動,但是啟動的時候依然可以進(jìn)行數(shù)據(jù)卷容器的工作。2.3.4 數(shù)據(jù)卷容器實踐數(shù)據(jù)卷容器實踐包括兩部分:創(chuàng)建數(shù)據(jù)卷容器和使用數(shù)據(jù)卷容器創(chuàng)建一個數(shù)據(jù)卷容器創(chuàng)建兩個容器,同時掛載數(shù)據(jù)卷容器確認(rèn)卷容器共享1 #進(jìn)入vc-test1,操作數(shù)據(jù)卷容器:2 :$ docker exec -it vc-test1 /bin/bash 3 rootc408f4f14786:/# ls /data/4 rootc408f4f14786:/# echo 'v-test1' > /data/v-test1.txt5 rootc408f4f14786:/# exit6 #進(jìn)入vc-test2,確認(rèn)數(shù)據(jù)卷:7 :$ docker exec -
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 光纜光器件制造技術(shù)開發(fā)合作協(xié)議
- 2024年紡織品出口加工與合作合同
- 二零二五年度房屋抵押貸款提前還款合同樣本封面2篇
- 二零二五年度快遞服務(wù)與快遞行業(yè)環(huán)保技術(shù)創(chuàng)新協(xié)議3篇
- 二零二五年度企業(yè)內(nèi)部講師培養(yǎng)與認(rèn)證協(xié)議3篇
- 2024年鉆探與地球物理勘探綜合合同
- 2025年度汽車修理廠與汽車用品供應(yīng)商合作合同3篇
- 2025年度市場調(diào)研委托函(市場預(yù)測)3篇
- 制造業(yè)生產(chǎn)責(zé)任豁免合同
- 2024年洗車工勞動服務(wù)協(xié)議細(xì)則版B版
- 《組織與胚胎學(xué)》課程期末考試復(fù)習(xí)題庫及答案
- (八省聯(lián)考)河南省2025年高考綜合改革適應(yīng)性演練 化學(xué)試卷(含答案)
- 部編版三年級上冊道德與法治期末測試卷帶答案(鞏固)
- 教師個人工作業(yè)績總結(jié)范文
- 《中華人民共和國政府采購法》專題培訓(xùn)
- 鄭州大學(xué)《高等代數(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 對銀行領(lǐng)導(dǎo)班子的評價意見和建議范文(3篇)
- 如何保護(hù)個人手機(jī)數(shù)據(jù)的安全
- 2024醫(yī)療設(shè)備維修與保養(yǎng)合同
- 第6課 戰(zhàn)國時期的社會變革(說課稿)2024-2025學(xué)年七年級歷史上冊同步高效課堂(統(tǒng)編版2024)
- 汽車內(nèi)飾件及材料氣味評價標(biāo)準(zhǔn)解析
評論
0/150
提交評論