SAAS-HRM-day12-2(docker入門)

1. 分布式項(xiàng)目部署介紹

需求:

  1. N多服務(wù)器部署服務(wù)
  2. 具體服務(wù)要能動(dòng)態(tài)擴(kuò)容與縮容
  3. 部署非常麻煩疤祭。自動(dòng)化部署--代碼塊下載代碼--編譯打包--安裝jdk--部署--自動(dòng)化測(cè)試

以上需求使用容器技術(shù)(docker-kubernetes)

2. DevOps介紹

2.1 DevOps是什么坟漱?

DevOps是Development和Operations兩個(gè)詞的縮寫蛇损。DevOps是一種方法或理念蛮位,它涵蓋開(kāi)發(fā)、測(cè)試、運(yùn)維的整個(gè)過(guò)程衔彻。DevOps是提高軟件開(kāi)發(fā)、測(cè)試偷办、運(yùn)維艰额、運(yùn)營(yíng) 等各部門的溝通與協(xié)作質(zhì)量的方法和過(guò)程,DevOps強(qiáng)調(diào)軟件開(kāi)發(fā)人員與軟件測(cè)試椒涯、軟件運(yùn)維柄沮、質(zhì)量保障(QA)部 門之間有效的溝通與協(xié)作,強(qiáng)調(diào)通過(guò)自動(dòng)化的方法去管理軟件變更废岂、軟件集成祖搓,使軟件從構(gòu)建到測(cè)試、發(fā)布更加快 捷湖苞、可靠拯欧,最終按時(shí)交付軟件。

  • 持續(xù)集成-docker鏡像(操作系統(tǒng)鏡像iso--->安裝N多操作系統(tǒng))
  • docker容器部署-集裝箱是操作(提前已經(jīng)裝好了,只需允許即可)

開(kāi)發(fā)即運(yùn)維-開(kāi)發(fā)可以做運(yùn)維事情,開(kāi)發(fā)出來(lái)的東西就是要部署東西

2.2 工具鏈

DevOps興起于2009年财骨,近年來(lái)由于云計(jì)算镐作、互聯(lián)網(wǎng)的發(fā)展,促進(jìn)了DevOps的基礎(chǔ)設(shè)施及工具鏈的發(fā)展隆箩,涌現(xiàn)了 一大批優(yōu)秀的工具该贾,這些工具包括開(kāi)發(fā)、測(cè)試捌臊、運(yùn)維的各各領(lǐng)域杨蛋,例如:GitHub、Git/SVN、Docker逞力、Jenkins曙寡、 Hudson、Ant/Maven/Gradle寇荧、Selenium卵皂、QUnit、JMeter等砚亭。

面試題:知道devops碼?

答案:知道,我們的項(xiàng)目中使用過(guò),使用一系列工具完成自動(dòng)處理,達(dá)到開(kāi)發(fā)出來(lái)就是要拿去部署.解決開(kāi)發(fā)環(huán)境和部署的環(huán)境不一致而導(dǎo)致反復(fù)部署過(guò)程.雖然增加了開(kāi)發(fā)人員工作量,對(duì)整個(gè)公司有好處,提高了運(yùn)維效率,降低了公司成本.

devops能夠提升軟件公司成熟度. CMM/CMMI

CMM/CMMI將軟件過(guò)程的成熟度分為5個(gè)等級(jí),以下是5個(gè)等級(jí)的基本特征:

  1. 初始級(jí)(initial)灯变。工作無(wú)序,項(xiàng)目進(jìn)行過(guò)程中常放棄當(dāng)初的計(jì)劃捅膘。管理無(wú)章法添祸,缺乏健全的管理制度。開(kāi)發(fā)項(xiàng)目成效不穩(wěn)定寻仗,項(xiàng)目成功主要依靠項(xiàng)目負(fù)責(zé)人的經(jīng)驗(yàn)和能力刃泌,他一但離去,工作秩序面目全非署尤。
  2. 可重復(fù)級(jí)(Repeatable)耙替。管理制度化,建立了基本的管理制度和規(guī)程曹体,管理工作有章可循俗扇。 初步實(shí)現(xiàn)標(biāo)準(zhǔn)化,開(kāi)發(fā)工作比較好地按標(biāo)準(zhǔn)實(shí)施箕别。 變更依法進(jìn)行铜幽,做到基線化,穩(wěn)定可跟蹤串稀,新項(xiàng)目的計(jì)劃和管理基于過(guò)去的實(shí)踐經(jīng)驗(yàn)除抛,具有重復(fù)以前成功項(xiàng)目的環(huán)境和條件。
  3. 已定義級(jí)(Defined)母截。開(kāi)發(fā)過(guò)程到忽,包括技術(shù)工作和管理工作,均已實(shí)現(xiàn)標(biāo)準(zhǔn)化清寇、文檔化喘漏。建立了完善的培訓(xùn)制度和專家評(píng)審制度,全部技術(shù)活動(dòng)和管理活動(dòng)均可控制颗管,對(duì)項(xiàng)目進(jìn)行中的過(guò)程陷遮、崗位和職責(zé)均有共同的理解 。
  4. 已管理級(jí)(Managed)垦江。產(chǎn)品和過(guò)程已建立了定量的質(zhì)量目標(biāo)。開(kāi)發(fā)活動(dòng)中的生產(chǎn)率和質(zhì)量是可量度的。已建立過(guò)程數(shù)據(jù)庫(kù)比吭。已實(shí)現(xiàn)項(xiàng)目產(chǎn)品和過(guò)程的控制绽族。可預(yù)測(cè)過(guò)程和產(chǎn)品質(zhì)量趨勢(shì)衩藤,如預(yù)測(cè)偏差吧慢,實(shí)現(xiàn)及時(shí)糾正。
  5. 優(yōu)化級(jí)(Optimizing)赏表〖焓可集中精力改進(jìn)過(guò)程,采用新技術(shù)瓢剿、新方法逢慌。擁有防止出現(xiàn)缺陷、識(shí)別薄弱環(huán)節(jié)以及加以改進(jìn)的手段间狂」テ茫可取得過(guò)程有效性的統(tǒng)計(jì)數(shù)據(jù),并可據(jù)進(jìn)行分析鉴象,從而得出最佳方法忙菠。

3. Docker簡(jiǎn)介

3.1 虛擬化

3.1.1 什么是虛擬化?

在計(jì)算機(jī)中纺弊,虛擬化(英語(yǔ):Virtualization)是一種資源管理技術(shù)牛欢,是將計(jì)算機(jī)的各種實(shí)體資源,如服務(wù)器淆游、網(wǎng)絡(luò)氢惋、內(nèi)存及存儲(chǔ)等,予以抽象稽犁、轉(zhuǎn)換后呈現(xiàn)出來(lái)焰望,打破實(shí)體結(jié)構(gòu)間的不可切割的障礙,使用戶可以比原本的組態(tài)更好的方式來(lái)應(yīng)用這些資源已亥。這些資源的新虛擬部份是不受現(xiàn)有資源的架設(shè)方式熊赖,地域或物理組態(tài)所限制。一般所指的虛擬化資源包括計(jì)算能力和資料存儲(chǔ)虑椎。

在實(shí)際的生產(chǎn)環(huán)境中震鹉,虛擬化技術(shù)主要用來(lái)解決高性能的物理硬件產(chǎn)能過(guò)剩和老的舊的硬件產(chǎn)能過(guò)低的重組重用,透明化底層物理硬件捆姜,從而最大化的利用物理硬件 對(duì)資源充分利用

虛擬化技術(shù)種類很多传趾,例如:軟件虛擬化、硬件虛擬化泥技、內(nèi)存虛擬化浆兰、網(wǎng)絡(luò)虛擬化(vip)、桌面虛擬化、服務(wù)虛擬化簸呈、虛擬機(jī)等等榕订。

3.1.2 虛擬化種類

  1. 全虛擬化架構(gòu)

    虛擬機(jī)的監(jiān)視器(hypervisor)是類似于用戶的應(yīng)用程序運(yùn)行在主機(jī)的OS之上,如VMware的workstation蜕便,這種虛擬化產(chǎn)品提供了虛擬的硬件劫恒。

  2. OS層虛擬化架構(gòu)-沒(méi)有比較NB產(chǎn)品

  3. 硬件層虛擬化

    硬件層的虛擬化具有高性能和隔離性,因?yàn)閔ypervisor直接在硬件上運(yùn)行轿腺,有利于控制VM的OS訪問(wèn)硬件資源两嘴,使用這種解決方案的產(chǎn)品有VMware ESXi 和 Xen server

    Hypervisor是一種運(yùn)行在物理服務(wù)器和操作系統(tǒng)之間的中間軟件層,可允許多個(gè)操作系統(tǒng)和應(yīng)用共享一套基礎(chǔ)物理硬件,因此也可以看作是虛擬環(huán)境中的“元”操作系統(tǒng)族壳,它可以協(xié)調(diào)訪問(wèn)服務(wù)器上的所有物理設(shè)備和虛擬機(jī)憔辫,也叫虛擬機(jī)監(jiān)視器(Virtual Machine Monitor,VMM)决侈。

    Hypervisor是所有虛擬化技術(shù)的核心螺垢。當(dāng)服務(wù)器啟動(dòng)并執(zhí)行Hypervisor時(shí),它會(huì)給每一臺(tái)虛擬機(jī)分配適量的內(nèi)存赖歌、CPU枉圃、網(wǎng)絡(luò)和磁盤,并加載所有虛擬機(jī)的客戶操作系統(tǒng)庐冯。 宿主機(jī)

    Hypervisor是所有虛擬化技術(shù)的核心孽亲,軟硬件架構(gòu)和管理更高效、更靈活展父,硬件的效能能夠更好地發(fā)揮出來(lái)返劲。常見(jiàn)的產(chǎn)品有:VMware、KVM栖茉、Xen等等篮绿。Openstack

  4. docker是容器虛擬化

3.2 什么是Docker-容器虛擬化

3.2.1 容器技術(shù)

Docker 是一個(gè)開(kāi)源的應(yīng)用容器引擎,讓開(kāi)發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的鏡像中吕漂,然后發(fā)布到任何流行的 Linux或Windows 機(jī)器上亲配,也可以實(shí)現(xiàn)虛擬化。容器是完全使用沙箱機(jī)制惶凝,相互之間不會(huì)有任何接口

3.2.2 容器與虛擬機(jī)比較

  1. 本質(zhì)上的區(qū)別

    共享操作系統(tǒng)吼虎,不需要安裝額外操作系統(tǒng)

  2. 使用上的區(qū)別

    VM vs Docker

VM Docker
Size 像大象一樣大 像老鼠一樣小
Startup 龜速 飛快
Integration 生氣 很棒,點(diǎn)贊

由上表可見(jiàn)苍鲜,差距巨大思灰,虛擬機(jī)已死,容器才是未來(lái)混滔。

3.2.3 Docker特點(diǎn)

  1. 上手快洒疚。

    用戶只需要幾分鐘歹颓,就可以把自己的程序“Docker化”。Docker依賴于“寫時(shí)復(fù)制”(copy-on-write)模型拳亿,使修改應(yīng)用程序也非常迅速晴股,可以說(shuō)達(dá)到“隨心所致愿伴,代碼即改”的境界肺魁。

    隨后,就可以創(chuàng)建容器來(lái)運(yùn)行應(yīng)用程序了隔节。大多數(shù)Docker容器只需要不到1秒中即可啟動(dòng)鹅经。由于去除了管理程序的開(kāi)銷,Docker容器擁有很高的性能怎诫,同時(shí)同一臺(tái)宿主機(jī)中也可以運(yùn)行更多的容器瘾晃,使用戶盡可能的充分利用系統(tǒng)資源。

  2. 職責(zé)的邏輯分類

    使用Docker幻妓,開(kāi)發(fā)人員只需要關(guān)心容器中運(yùn)行的應(yīng)用程序蹦误,而運(yùn)維人員只需要關(guān)心如何管理容器。Docker設(shè)計(jì)的目的就是要加強(qiáng)開(kāi)發(fā)人員寫代碼的開(kāi)發(fā)環(huán)境與應(yīng)用程序要部署的生產(chǎn)環(huán)境一致性肉津。從而降低那種“開(kāi)發(fā)時(shí)一切正常强胰,肯定是運(yùn)維的問(wèn)題(測(cè)試環(huán)境都是正常的,上線后出了問(wèn)題就歸結(jié)為肯定是運(yùn)維的問(wèn)題)”

  3. 快速高效的開(kāi)發(fā)生命周期

    Docker的目標(biāo)之一就是縮短代碼從開(kāi)發(fā)妹沙、測(cè)試到部署偶洋、上線運(yùn)行的周期,讓你的應(yīng)用程序具備可移植性距糖,易于構(gòu)建玄窝,并易于協(xié)作。(通俗一點(diǎn)說(shuō)悍引,Docker就像一個(gè)盒子恩脂,里面可以裝很多物件,如果需要這些物件的可以直接將該大盒子拿走趣斤,而不需要從該盒子中一件件的取俩块。)

  4. 鼓勵(lì)使用面向服務(wù)的架構(gòu)

    Docker還鼓勵(lì)面向服務(wù)的體系結(jié)構(gòu)和微服務(wù)架構(gòu)。Docker推薦單個(gè)容器只運(yùn)行一個(gè)應(yīng)用程序或進(jìn)程唬渗,這樣就形成了一個(gè)分布式的應(yīng)用程序模型典阵,在這種模型下,應(yīng)用程序或者服務(wù)都可以表示為一系列內(nèi)部互聯(lián)的容器镊逝,從而使分布式部署應(yīng)用程序壮啊,擴(kuò)展或調(diào)試應(yīng)用程序都變得非常簡(jiǎn)單,同時(shí)也提高了程序的內(nèi)省性撑蒜。(當(dāng)然歹啼,可以在一個(gè)容器中運(yùn)行多個(gè)應(yīng)用程序)

傳統(tǒng)操作太過(guò)于麻煩玄渗,而集裝箱操作模式,開(kāi)發(fā)即部署(對(duì)開(kāi)發(fā)人員要很高.) 運(yùn)維前置狸眼。把所有事情都做完,直接運(yùn)送集裝箱啟動(dòng)就ok

3.3 Docker組件

[圖片上傳失敗...(image-c45c58-1569804381080)]

3.3.1 Docker客戶端和服務(wù)器

Docker是一個(gè)客戶端-服務(wù)器(C/S)架構(gòu)程序藤树。Docker客戶端只需要向Docker服務(wù)器或者守護(hù)進(jìn)程發(fā)出請(qǐng)求,服務(wù)器或者守護(hù)進(jìn)程將完成所有工作并返回結(jié)果拓萌。Docker提供了一個(gè)命令行工具Docker以及一整套R(shí)ESTful API岁钓。你可以在同一臺(tái)宿主機(jī)上運(yùn)行Docker守護(hù)進(jìn)程和客戶端,也可以從本地的Docker客戶端連接到運(yùn)行在另一臺(tái)宿主機(jī)上的遠(yuǎn)程Docker守護(hù)進(jìn)程微王。
[圖片上傳失敗...(image-688c8a-1569804381080)]

3.3.2 Docker鏡像

鏡像是構(gòu)建Docker的基石屡限。用戶基于鏡像來(lái)運(yùn)行自己的容器。鏡像也是Docker生命周期中的“構(gòu)建”部分炕倘。鏡像是基于聯(lián)合文件系統(tǒng)的一種層式結(jié)構(gòu)钧大,由一系列指令一步一步構(gòu)建出來(lái)。例如:

  • 添加一個(gè)文件罩旋;
  • 執(zhí)行一個(gè)命令啊央;
  • 打開(kāi)一個(gè)窗口。
  • 也可以將鏡像當(dāng)作容器的“源代碼”涨醋。鏡像體積很小瓜饥,非常“便攜”东帅,易于分享压固、存儲(chǔ)和更新。

3.3.3 Registry(注冊(cè)中心)

Docker用Registry來(lái)保存用戶構(gòu)建的鏡像靠闭。Registry分為公共和私有兩種帐我。Docker公司運(yùn)營(yíng)公共的Registry叫做Docker Hub。用戶可以在Docker Hub注冊(cè)賬號(hào)愧膀,分享并保存自己的鏡像(說(shuō)明:在Docker Hub下載鏡像巨慢拦键,可以自己構(gòu)建私有的Registry)。

3.3.4 Docker容器

Docker可以幫助你構(gòu)建和部署容器檩淋,你只需要把自己的應(yīng)用程序或者服務(wù)打包放進(jìn)容器即可芬为。容器是基于鏡像啟動(dòng)起來(lái)的,容器中可以運(yùn)行一個(gè)或多個(gè)進(jìn)程蟀悦。我們可以認(rèn)為媚朦,鏡像是Docker生命周期中的構(gòu)建或者打包階段,而容器則是啟動(dòng)或者執(zhí)行階段日戈。 容器基于鏡像啟動(dòng)询张,一旦容器啟動(dòng)完成后,我們就可以登錄到容器中安裝自己需要的軟件或者服務(wù)浙炼。

所以Docker容器就是:

  1. 一個(gè)鏡像格式份氧;
  2. 一些列標(biāo)準(zhǔn)操作唯袄;
  3. 一個(gè)執(zhí)行環(huán)境。

Docker借鑒了標(biāo)準(zhǔn)集裝箱的概念蜗帜。標(biāo)準(zhǔn)集裝箱將貨物運(yùn)往世界各地恋拷,Docker將這個(gè)模型運(yùn)用到自己的設(shè)計(jì)中,唯一不同的是:集裝箱運(yùn)輸貨物厅缺,而Docker運(yùn)輸軟件蔬顾。

和集裝箱一樣,Docker在執(zhí)行上述操作時(shí)店归,并不關(guān)心容器中到底裝了什么阎抒,它不管是web服務(wù)器酪我,還是數(shù)據(jù)庫(kù)消痛,或者是應(yīng)用程序服務(wù)器什么的。所有的容器都按照相同的方式將內(nèi)容“裝載”進(jìn)去都哭。

Docker也不關(guān)心你要把容器運(yùn)到何方:我們可以在自己的筆記本中構(gòu)建容器秩伞,上傳到Registry,然后下載到一個(gè)物理的或者虛擬的服務(wù)器來(lái)測(cè)試欺矫,在把容器部署到具體的主機(jī)中纱新。像標(biāo)準(zhǔn)集裝箱一樣,Docker容器方便替換穆趴,可以疊加脸爱,易于分發(fā),并且盡量通用未妹。

使用Docker簿废,我們可以快速的構(gòu)建一個(gè)應(yīng)用程序服務(wù)器、一個(gè)消息總線络它、一套實(shí)用工具族檬、一個(gè)持續(xù)集成(CI)測(cè)試環(huán)境或者任意一種應(yīng)用程序、服務(wù)或工具化戳。我們可以在本地構(gòu)建一個(gè)完整的測(cè)試環(huán)境单料,也可以為生產(chǎn)或開(kāi)發(fā)快速?gòu)?fù)制一套復(fù)雜的應(yīng)用程序棧。

4. Docker安裝與啟動(dòng)

4.1 安裝環(huán)境說(shuō)明

Docker官方建議在Ubuntu中安裝点楼,因?yàn)镈ocker是基于Ubuntu發(fā)布的扫尖,而且一般Docker出現(xiàn)的問(wèn)題Ubuntu是最先更新或者打補(bǔ)丁的。在很多版本的CentOS中是不支持更新最新的一些補(bǔ)丁包的掠廓。 7最新版本

4.2 使用阿里云服務(wù)器安裝CentOS 7.6 64位

略過(guò)

使用ifconfig命令可以查詢到ip

4.3 安裝Docker

使用yum命令在線安裝

yum install docker

遇到提示選擇y即可

4.4 安裝后查看Docker版本

docker version

4.5 啟動(dòng)與停止Docker

systemctl命令是系統(tǒng)服務(wù)管理器指令换怖,它是 service 和 chkconfig 兩個(gè)命令組合。

  • 啟動(dòng)docker:systemctl start docker
  • 停止docker:systemctl stop docker
  • 重啟docker:systemctl restart docker
  • 查看docker狀態(tài):systemctl status docker
  • 開(kāi)機(jī)啟動(dòng):systemctl enable docker
  • 查看docker概要信息:docker info
  • 查看docker幫助文檔:docker --help

現(xiàn)在就啟動(dòng)docker却盘,并把docker設(shè)置為開(kāi)機(jī)自動(dòng)啟動(dòng)

5. Docker鏡像操作

5.1 什么是Docker鏡像?

Docker鏡像是由文件系統(tǒng)疊加而成(是一種文件的存儲(chǔ)形式)狰域。最底端是一個(gè)文件引導(dǎo)系統(tǒng)媳拴,即bootfs,這很像典型的Linux/Unix的引導(dǎo)文件系統(tǒng)兆览。Docker用戶幾乎永遠(yuǎn)不會(huì)和引導(dǎo)系統(tǒng)有什么交互屈溉。實(shí)際上,當(dāng)一個(gè)容器啟動(dòng)后抬探,它將會(huì)被移動(dòng)到內(nèi)存中子巾,而引導(dǎo)文件系統(tǒng)則會(huì)被卸載,以留出更多的內(nèi)存供磁盤鏡像使用小压。Docker容器啟動(dòng)是需要的一些文件线梗,而這些文件就可以稱為Docker鏡像。
[圖片上傳失敗...(image-6fbc7d-1569804381080)]

鏡像就相當(dāng)于操作系統(tǒng)iso文件,可以安裝多個(gè)操作系統(tǒng). 一個(gè)鏡像可以啟動(dòng)多個(gè)容器.

5.2 列出鏡像

列出docker下的所有鏡像怠益,命令:

docker images
  • REPOSITORY:鏡像所在的倉(cāng)庫(kù)名稱
  • TAG:鏡像標(biāo)簽
  • IMAGE ID:鏡像ID
  • CREATED:鏡像的創(chuàng)建日期(不是獲取該鏡像的日期)
  • SIZE:鏡像大小
    這些鏡像都是存儲(chǔ)在Docker宿主機(jī)的/var/lib/docker目錄下

為了區(qū)分同一個(gè)倉(cāng)庫(kù)下的不同鏡像仪搔,Docker提供了一種稱為標(biāo)簽(Tag)的功能。每個(gè)鏡像在列出來(lái)時(shí)都帶有一個(gè)標(biāo)簽蜻牢,例如12.10烤咧、12.04等等。每個(gè)標(biāo)簽對(duì)組成特定鏡像的一些鏡像層進(jìn)行標(biāo)記(比如抢呆,標(biāo)簽12.04就是對(duì)所有Ubuntu12.04鏡像層的標(biāo)記)煮嫌。這種機(jī)制使得同一個(gè)倉(cāng)庫(kù)中可以存儲(chǔ)多個(gè)鏡像。--- 版本號(hào)

我們?cè)谶\(yùn)行同一個(gè)倉(cāng)庫(kù)中的不同鏡像時(shí)抱虐,可以通過(guò)在倉(cāng)庫(kù)名后面加上一個(gè)冒號(hào)和標(biāo)簽名來(lái)指定該倉(cāng)庫(kù)中的某一具體的鏡像昌阿,例如docker run --name custom_container_name –i –t docker.io/ubunto:12.04 /bin/bash,表明從鏡像Ubuntu:12.04啟動(dòng)一個(gè)容器恳邀,而這個(gè)鏡像的操作系統(tǒng)就是Ubuntu:12.04懦冰。在構(gòu)建容器時(shí)指定倉(cāng)庫(kù)的標(biāo)簽也是一個(gè)好習(xí)慣。

5.3 搜索鏡像

如果你需要從網(wǎng)絡(luò)中查找需要的鏡像轩娶,可以通過(guò)以下命令搜索

docker search 鏡像名稱
  • NAME:倉(cāng)庫(kù)名稱
  • DESCRIPTION:鏡像描述
  • STARS:用戶評(píng)價(jià)儿奶,反應(yīng)一個(gè)鏡像的受歡迎程度
  • OFFICIAL:是否官方
  • AUTOMATED:自動(dòng)構(gòu)建,表示該鏡像由Docker Hub自動(dòng)構(gòu)建流程創(chuàng)建的63.4拉取鏡像

5.4 拉取鏡像

5.4.1 從Docker Hub拉取

Docker鏡像首頁(yè)鳄抒,包括官方鏡像和其它公開(kāi)鏡像闯捎。Docker Hub上最受歡迎的10大鏡像(通過(guò)Docker registry API獲取不了鏡像被pull的個(gè)數(shù),只能通過(guò)鏡像的stars數(shù)量许溅,來(lái)衡量鏡像的流行度瓤鼻。毫無(wú)疑問(wèn),擁有最高stars數(shù)量的庫(kù)都是官方庫(kù))贤重。

國(guó)情的原因茬祷,國(guó)內(nèi)下載 Docker HUB 官方的相關(guān)鏡像比較慢,可以使用國(guó)內(nèi)(docker.io)的一些鏡像加速器并蝗,鏡像保持和官方一致祭犯,關(guān)鍵是速度塊秸妥,推薦使用。Mirror與Private Registry的區(qū)別:
Private Registry(私有倉(cāng)庫(kù))是開(kāi)發(fā)者或者企業(yè)自建的鏡像存儲(chǔ)庫(kù)沃粗,通常用來(lái)保存企業(yè)內(nèi)部的 Docker 鏡像粥惧,用于內(nèi)部開(kāi)發(fā)流程和產(chǎn)品的發(fā)布、版本控制最盅。

Mirror是一種代理中轉(zhuǎn)服務(wù)突雪,我們(比如daocloud)提供的Mirror服務(wù),直接對(duì)接Docker Hub的官方Registry涡贱。Docker Hub 上有數(shù)以十萬(wàn)計(jì)的各類 Docker 鏡像咏删。

在使用Private Registry時(shí),需要在Docker Pull 或Dockerfile中直接鍵入Private Registry 的地址问词,通常這樣會(huì)導(dǎo)致與 Private Registry 的綁定督函,缺乏靈活性。

使用 Mirror 服務(wù)戏售,只需要在 Docker 守護(hù)進(jìn)程(Daemon)的配置文件中加入 Mirror 參數(shù)侨核,即可在全局范圍內(nèi)透明的訪問(wèn)官方的 Docker Hub,避免了對(duì) Dockerfile 鏡像引用來(lái)源的修改灌灾。

簡(jiǎn)單來(lái)說(shuō),Mirror類似CDN悲柱,本質(zhì)是官方的cache锋喜;Private Registry類似私服,跟官方?jīng)]什么關(guān)系豌鸡。對(duì)用戶來(lái)說(shuō)嘿般,由于用戶是要拖docker hub上的image,對(duì)應(yīng)的是Mirror涯冠。yum/apt-get的Mirror又有點(diǎn)不一樣炉奴,它其實(shí)是把官方的庫(kù)文件整個(gè)拖到自己的服務(wù)器上做鏡像,并定時(shí)與官方做同步蛇更;而Docker Mirror只會(huì)緩存曾經(jīng)使用過(guò)的image瞻赶。

使用命令拉取:

docker pull centos:7

目前國(guó)內(nèi)訪問(wèn)docker hub速度上有點(diǎn)尷尬派任,使用docker Mirror勢(shì)在必行≡已罚現(xiàn)有國(guó)內(nèi)提供docker鏡像加速服務(wù)的商家有不少,下面重點(diǎn)ustc鏡像掌逛。

5.4.2 ustc的鏡像

ustc是老牌的linux鏡像服務(wù)提供者了师逸,還在遙遠(yuǎn)的ubuntu 5.04版本的時(shí)候就在用。ustc的docker鏡像加速器速度很快豆混。ustc docker mirror的優(yōu)勢(shì)之一就是不需要注冊(cè)篓像,是真正的公共服務(wù)动知。
https://lug.ustc.edu.cn/wiki/mirrors/help/docker

步驟:

  1. 編輯該文件:vim /etc/docker/daemon.json // 如果該文件不存在就手動(dòng)創(chuàng)建;說(shuō)明:在centos7.x下员辩,通過(guò)vim拍柒。
  2. 在該文件中輸入如下內(nèi)容:
{
    "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
  1. 注意:一定要重啟docker服務(wù),如果重啟docker后無(wú)法加速屈暗,可以重新啟動(dòng)OS

然后通過(guò)docker pull命令下載鏡像:速度杠杠的拆讯。

5.5 刪除鏡像

  1. docker rmi $IMAGE_ID:刪除指定鏡像
  2. docker rmi docker images -q:刪除所有鏡像

使用命令docker images 可以查看所有鏡像,里面會(huì)有指定鏡像的$IMAGE_ID

6. Docker容器操作

6.1 查看容器

  • 查看正在運(yùn)行容器
dockper ps
  • 查看所有的容器(啟動(dòng)過(guò)的歷史容器)(高版本才支持)
dockper ps -a
  • 查看最后一次運(yùn)行的容器
docker ps -l
  • 查看停止的容器
docker ps -f status=exited

6.2 創(chuàng)建與啟動(dòng)容器

  • 創(chuàng)建容器常用的參數(shù)說(shuō)明:
  • 創(chuàng)建容器命令:docker run
  • -i:表示運(yùn)行容器
  • -t:表示容器啟動(dòng)后會(huì)進(jìn)入容器命令行(交互式)养叛。加入這兩個(gè)參數(shù)后种呐,容器創(chuàng)建就能登錄進(jìn)去。即分配一個(gè)偽終端弃甥。
  • --name :為創(chuàng)建的容器命名爽室。
  • -v:表示目錄映射關(guān)系(前者是宿主機(jī)目錄,后者是映射到宿主機(jī)上的目錄)淆攻,可以使用多個(gè)-v做多個(gè)目錄或文件映射阔墩。注意:最好做目錄映射,在宿主機(jī)上做修改瓶珊,然后共享到容器上啸箫。
  • -d:在run后面加上-d參數(shù),則會(huì)創(chuàng)建一個(gè)守護(hù)式容器在后臺(tái)運(yùn)行(這樣創(chuàng)建容器后不會(huì)自動(dòng)登錄容器,如果只加-i -t兩個(gè)參數(shù)伞芹,創(chuàng)建后就會(huì)自動(dòng)進(jìn)去容器)忘苛。
  • -p:表示端口映射,前者是宿主機(jī)端口唱较,后者是容器內(nèi)的映射端口扎唾。可以使用多個(gè)-p做多個(gè)端口映射

6.2.1 交互式容器 -另開(kāi)窗口

創(chuàng)建一個(gè)交互式容器并取名為mycentos南缓,會(huì)發(fā)現(xiàn)成功后命令行的前綴[]里面也發(fā)生了改變胸遇,說(shuō)明進(jìn)入了這個(gè)交互式容器

docker run -it --name=mycentos centos:7 /bin/bash

這時(shí)我們通過(guò)ps命令查看,發(fā)現(xiàn)可以看到容器狀態(tài)汉形,NAMES是mycentos狀態(tài)為啟動(dòng)狀態(tài)(STATUS 字段下面為Up就是啟動(dòng)狀態(tài))

docker ps –a

使用exit命令 退出當(dāng)前容器

exit

這時(shí)我們通過(guò)ps命令查看纸镊,發(fā)現(xiàn)可以看到容器狀態(tài),NAMES是創(chuàng)建一個(gè)交互式容器并取名為mycentos的容器狀態(tài)為停止?fàn)顟B(tài)(STATUS 字段下面為Exited就是停止?fàn)顟B(tài))

docker ps –a

退出容器馬上停止获雕。因?yàn)槭墙换ナ饺萜鞅∧澹翱陉P(guān)閉也會(huì)立即停止容器。

6.2.2 守護(hù)式容器

創(chuàng)建一個(gè)守護(hù)式容器:如果對(duì)于一個(gè)需要長(zhǎng)期運(yùn)行的容器來(lái)說(shuō)届案,我們可以創(chuàng)建一個(gè)守護(hù)式容器庵楷。命令如下(容器名稱不能重復(fù)):

docker run -di --name=mycentos2 centos:7
  • 登錄守護(hù)式容器方式 (exit退出時(shí),容器不會(huì)停止)
docker exec -it container_name (或者 container_id) /bin/bash

6.3 停止與啟動(dòng)容器

  • 停止正在運(yùn)行的容器(使用名字或者ID都可以)
docker stop $CONTAINER_NAME/ID
  • 啟動(dòng)已運(yùn)行過(guò)的容器(使用名字或者ID都可以)
docker start $CONTAINER_NAME/ID

6.4 文件拷貝

  • 將文件拷貝到容器內(nèi)可以使用cp命令
docker cp 需要拷貝的文件或目錄 容器名稱:容器目錄
  • 將文件從容器內(nèi)拷貝出來(lái)
docker cp 容器名稱:容器目錄 需要拷貝的文件或目

6.5 目錄掛載

可以在創(chuàng)建容器的時(shí)候,將宿主機(jī)的目錄與容器內(nèi)的目錄進(jìn)行映射尽纽,這樣我們就可以通過(guò)修改宿主機(jī)某個(gè)目錄的文件從而去影響容器咐蚯。

創(chuàng)建容器 添加-v參數(shù) 后邊為 宿主機(jī)目錄:容器目錄

docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos2 centos:7

如果你共享的是多級(jí)的目錄,可能會(huì)出現(xiàn)權(quán)限不足的提示:Permission denied

這是因?yàn)镃entOS7中的安全模塊selinux把權(quán)限禁掉了弄贿,我們需要添加參數(shù) --privileged=true 來(lái)解決掛載的目錄沒(méi)有權(quán)限的問(wèn)題

6.6 查看容器IP地址

  • 查看容器運(yùn)行的各種數(shù)據(jù)
docker inspect mycentos2
  • 直接執(zhí)行下面的命令直接輸出IP地址
docker inspect --format='{{.NetworkSettings.IPAddress}}' mycentos2

6.7 刪除容器

  • 刪除指定的容器(只能刪除停止的容器)
docker rm $CONTAINER_ID/NAME
  • 刪除所有容器
docker rm `docker ps -a -q`

7. 部署hrm系統(tǒng)-基礎(chǔ)環(huán)境

7.1 Redis部署

  1. 拉取Redis鏡像
docker pull redis
  1. 創(chuàng)建Redis容器
docker run -di --name=hrm_redis -p 6379:6379 redis

譯:創(chuàng)建一個(gè)redis容器春锋,給這個(gè)容器起個(gè)名字叫hrm_redis,給這個(gè)容器進(jìn)行端口映射差凹,前面是宿主機(jī)端口期奔,后面是hrm_redis容器的端口,使宿主機(jī)的端口和hrm_redis容器端口進(jìn)行映射危尿,這樣訪問(wèn)宿主機(jī)的6379端口就會(huì)映射到hrn_redis容器的6379端口呐萌。

  1. 阿里云安全組配置入方向放行6379端口

  2. 客戶端測(cè)試

    在你的本地電腦命令提示符下,用window版本redis客戶端測(cè)試

redis-cli -h 阿里云公網(wǎng)ip

7.2 Nginx部署

  1. 拉取Nginx鏡像
docker pull nginx
  1. 創(chuàng)建Nginx容器
docker run -di --name=hrm_nginx -p 80:80 nginx
  1. 阿里云安全組配置入方向放行80端口
  2. 測(cè)試Nginx
  • 方式一:瀏覽器地址欄輸入: 公網(wǎng)ip
xxx.xxx.xx.x
  • 方式二:瀏覽器地址欄輸入:公網(wǎng)ip配置的域名
wangningbo.cn
  1. 配置反向代理
    官方的nginx鏡像,nginx配置文件nginx.conf 在/etc/nginx/目錄下谊娇。

在容器內(nèi)編輯配置文件不方便肺孤,我們可以先將配置文件從容器內(nèi)拷貝到宿主機(jī),編輯修改后再拷貝回去济欢。

  • (1)從容器拷貝配置文件到宿主機(jī)
docker cp hrm_nginx:/etc/nginx/nginx.conf nginx.conf
  • 編輯nginx.conf赠堵,添加反向代理配置
upstream tomcat-cas {
    server 阿里云公網(wǎng)ip:8080;
}
server {
    listen 80;
    server_name passport.hrm.com;
    location / {
        proxy_pass http://tomcat-cas;
        index index.html index.htm;
    }
}
  • (3)將修改后的配置文件拷貝到容器
docker cp nginx.conf  hrm_nginx:/etc/nginx/nginx.conf
  • (4)重新啟動(dòng)容器
docker restart hrm_nginx
  • (5)設(shè)置域名指向
192.168.247.135 passport.hrm.com 

瀏覽器測(cè)試:http://passport.hrm.com/cas/login

7.3 MySQL部署

  1. 拉取MySQL鏡像
docker pull mysql
  1. 創(chuàng)建MySQL容器
docker run -di --name hrm_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=密碼 mysql

-p 代表端口映射,格式為 宿主機(jī)映射端口:容器運(yùn)行端口

-e 代表添加環(huán)境變量 MYSQL_ROOT_PASSWORD是root用戶的登陸密碼

  1. 阿里云安全組配置入方向放行3306端口
  2. 配置mysql允許遠(yuǎn)程連接
  • (1)進(jìn)入mysql容器
語(yǔ)法:docker exec -it 容器名字 /bin/bash
docker exec -it hrm_mysql /bin/bash
  • (2)登錄mysql

備注 : mysql -u 最高權(quán)限用戶名 -p 再輸入密碼進(jìn)入

mysql -u root -p
  • (3)查看用戶信息
select host,user,plugin,authentication_string from mysql.user;

備注:host為 % 表示不限制ip localhost表示本機(jī)使用 plugin非mysql_native_password 則需要修改密碼

  • (4)修改用戶密碼

如果想要設(shè)置遠(yuǎn)程這樣設(shè)置:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'newpassword'; 

譯:更新一下用戶的密碼(推薦輸入登錄mysql時(shí)候的root的密碼) root用戶密碼為newpassword

如果要設(shè)置本地plugin為mysql_native_password這樣設(shè)置:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword';

譯:更新一下用戶的密碼(推薦輸入登錄mysql時(shí)候的root的密碼),root用戶密碼為newpassword

  • (5)刷新權(quán)限
flush privileges;
  1. 遠(yuǎn)程登陸MySQL

    連接的時(shí)候使用的是阿里云公網(wǎng)ip

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末法褥,一起剝皮案震驚了整個(gè)濱河市茫叭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌挖胃,老刑警劉巖杂靶,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異酱鸭,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)垛吗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門凹髓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人怯屉,你說(shuō)我怎么就攤上這事蔚舀。” “怎么了锨络?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵赌躺,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我羡儿,道長(zhǎng)礼患,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮缅叠,結(jié)果婚禮上悄泥,老公的妹妹穿的比我還像新娘。我一直安慰自己肤粱,他們只是感情好弹囚,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著领曼,像睡著了一般鸥鹉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上庶骄,一...
    開(kāi)封第一講書(shū)人閱讀 51,146評(píng)論 1 297
  • 那天毁渗,我揣著相機(jī)與錄音,去河邊找鬼瓢姻。 笑死祝蝠,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的幻碱。 我是一名探鬼主播绎狭,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼褥傍!你這毒婦竟也來(lái)了儡嘶?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤恍风,失蹤者是張志新(化名)和其女友劉穎蹦狂,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體朋贬,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡凯楔,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了锦募。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片摆屯。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖糠亩,靈堂內(nèi)的尸體忽然破棺而出虐骑,到底是詐尸還是另有隱情,我是刑警寧澤赎线,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布廷没,位于F島的核電站,受9級(jí)特大地震影響垂寥,放射性物質(zhì)發(fā)生泄漏颠黎。R本人自食惡果不足惜另锋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望盏缤。 院中可真熱鬧砰蠢,春花似錦、人聲如沸唉铜。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)潭流。三九已至竞惋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間灰嫉,已是汗流浹背拆宛。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留讼撒,地道東北人浑厚。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像根盒,于是被迫代替她去往敵國(guó)和親钳幅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容