還在使用虛擬機(jī)?30分鐘教你快速入門(mén)Docker

2021-03-01    分類(lèi): 網(wǎng)站建設(shè)

一、歡迎來(lái)到 Docker 世界

1. Docker 與虛擬化

在沒(méi)有 Docker 的時(shí)代,我們會(huì)使用硬件虛擬化(虛擬機(jī))以提供隔離。這里,虛擬機(jī)通過(guò)在操作系統(tǒng)上建立了一個(gè)中間虛擬軟件層 Hypervisor ,并利用物理機(jī)器的資源虛擬出多個(gè)虛擬硬件環(huán)境來(lái)共享宿主機(jī)的資源,其中的應(yīng)用運(yùn)行在虛擬機(jī)內(nèi)核上。但是,虛擬機(jī)對(duì)硬件的利用率存在瓶頸,因?yàn)樘摂M機(jī)很難根據(jù)當(dāng)前業(yè)務(wù)量動(dòng)態(tài)調(diào)整其占用的硬件資源,因此容器化技術(shù)得以流行。其中,Docker 是一個(gè)開(kāi)源的應(yīng)用容器引擎,讓開(kāi)發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上。



Docker 容器不使用硬件虛擬化,它的守護(hù)進(jìn)程是宿主機(jī)上的一個(gè)進(jìn)程,換句話說(shuō),應(yīng)用直接運(yùn)行在宿主機(jī)內(nèi)核上。因?yàn)槿萜髦羞\(yùn)行的程序和計(jì)算機(jī)的操作系統(tǒng)之間沒(méi)有額外的中間層,沒(méi)有資源被冗余軟件的運(yùn)行或虛擬硬件的模擬而浪費(fèi)掉。

Docker 的優(yōu)勢(shì)不僅如此,我們來(lái)比較一番。

特性Docker虛擬機(jī)啟動(dòng)速度秒級(jí)分鐘級(jí)交付/部署開(kāi)發(fā)、測(cè)試、生產(chǎn)環(huán)境一致無(wú)成熟體系性能近似物理機(jī)性能損耗大體量極?。∕B)較大(GB)遷移/擴(kuò)展跨平臺(tái),可復(fù)制較為復(fù)雜

2. 鏡像、容器和倉(cāng)庫(kù)

Docker 由鏡像(Image)、容器(Container)、倉(cāng)庫(kù)(Repository) 三部分組成。

Docker 的鏡像可以簡(jiǎn)單的類(lèi)比為電腦裝系統(tǒng)用的系統(tǒng)盤(pán),包括操作系統(tǒng),以及必要的軟件。例如,一個(gè)鏡像可以包含一個(gè)完整的 centos 操作系統(tǒng)環(huán)境,并安裝了 Nginx 和 Tomcat 服務(wù)器。注意的是,鏡像是只讀的。這一點(diǎn)也很好理解,就像我們刻錄的系統(tǒng)盤(pán)其實(shí)也是可讀的。我們可以使用 docker images 來(lái)查看本地鏡像列表。

Docker 的容器可以簡(jiǎn)單理解為提供了系統(tǒng)硬件環(huán)境,它是真正跑項(xiàng)目程序、消耗機(jī)器資源、提供服務(wù)的東西。例如,我們可以暫時(shí)把容器看作一個(gè) Linux 的電腦,它可以直接運(yùn)行。那么,容器是基于鏡像啟動(dòng)的,并且每個(gè)容器都是相互隔離的。注意的是,容器在啟動(dòng)的時(shí)候基于鏡像創(chuàng)建一層可寫(xiě)層作為最上層。我們可以使用 docker ps-a 查看本地運(yùn)行過(guò)的容器。

Docker 的倉(cāng)庫(kù)用于存放鏡像。這一點(diǎn),和 Git 非常類(lèi)似。我們可以從中心倉(cāng)庫(kù)下載鏡像,也可以從自建倉(cāng)庫(kù)下載。同時(shí),我們可以把制作好的鏡像 commit 到本地,然后 push 到遠(yuǎn)程倉(cāng)庫(kù)。倉(cāng)庫(kù)分為公開(kāi)倉(cāng)庫(kù)和私有倉(cāng)庫(kù),大的公開(kāi)倉(cāng)庫(kù)是官方倉(cāng)庫(kù) Dock Hub,國(guó)內(nèi)的公開(kāi)倉(cāng)庫(kù)也有很多選擇,例如阿里云等。


圖片來(lái)源互聯(lián)網(wǎng)

3. Docker 促使開(kāi)發(fā)流程變更

筆者認(rèn)為,Docker 對(duì)開(kāi)發(fā)流程的影響在于使環(huán)境標(biāo)準(zhǔn)化。例如,原來(lái)我們存在三個(gè)環(huán)境:開(kāi)發(fā)(日常)環(huán)境、測(cè)試環(huán)境、生產(chǎn)環(huán)境。這里,我們對(duì)于每個(gè)環(huán)境都需要部署相同的軟件、腳本和運(yùn)行程序,如圖所示。事實(shí)上,對(duì)于啟動(dòng)腳本內(nèi)容都是一致的,但是沒(méi)有統(tǒng)一維護(hù),經(jīng)常會(huì)出問(wèn)題。此外,對(duì)于運(yùn)行程序而言,如果所依賴的底層運(yùn)行環(huán)境不一致,也會(huì)造成困擾和異常。


現(xiàn)在,我們通過(guò)引入 Docker 之后,我們只需要維護(hù)一個(gè) Docker 鏡像。換句話說(shuō),多套環(huán)境,一個(gè)鏡像,實(shí)現(xiàn)系統(tǒng)級(jí)別的一次構(gòu)建到處運(yùn)行。此時(shí),我們把運(yùn)行腳本標(biāo)準(zhǔn)化了,把底層軟件鏡像化了,然后對(duì)于相同的將要部署的程序?qū)嵭袠?biāo)準(zhǔn)化部署。因此,Docker 為我們提供了一個(gè)標(biāo)準(zhǔn)化的運(yùn)維模式,并固化運(yùn)維步驟和流程。


通過(guò)這個(gè)流程的改進(jìn),我們更容易實(shí)現(xiàn) DevOps 的目標(biāo),因?yàn)槲覀兊溺R像生成后可以跑在任何系統(tǒng),并快速部署。此外,使用 Docker 的很大動(dòng)力是基于 Docker 實(shí)現(xiàn)彈性調(diào)度,以更充分地利用機(jī)器資源,節(jié)省成本。

哈哈,筆者在使用 Docker 過(guò)程中,還發(fā)現(xiàn)了一些很棒的收益點(diǎn),例如我們發(fā)布回滾的時(shí)候只需要切換 TAG 并重啟即可。還比如,我們對(duì)環(huán)境升級(jí),也只需要升級(jí)基礎(chǔ)鏡像,那么新構(gòu)建的應(yīng)用鏡像,自動(dòng)會(huì)引用新的版本。(歡迎補(bǔ)充~~~)

二、從搭建 Web 服務(wù)器開(kāi)始說(shuō)起

1. 環(huán)境先行,安裝 Docker

現(xiàn)在,我們需要安裝以下步驟安裝 Docker。

  • 注冊(cè)帳號(hào):在 https://hub.docker.com/ 注冊(cè)賬號(hào)。
  • 下載安裝

官方下載地址:(Mac):https://download.docker.com/mac/stable/Docker.dmg

阿里云下載地址(Mac):> http://mirrors.aliyun.com/docker-toolbox/mac/docker-for-mac/>

阿里云下載地址(Windows):> http://mirrors.aliyun.com/docker-toolbox/windows/docker-for-windows/

這里,雙擊剛剛下載的 Doker.dmg 安裝包進(jìn)行安裝。


安裝完成后啟動(dòng), Mac 頂部導(dǎo)航欄出現(xiàn)了一個(gè)圖標(biāo),通過(guò)菜單可以進(jìn)行 docker 配置和退出等操作。


官方指南:https://docs.docker.com/install/

阿里云指南(Linux):https://yq.aliyun.com/articles/110806?spm=5176.8351553.0.0.468b1991jdT95t

  • 設(shè)置加速服務(wù)

市面上有很多加速服務(wù)的提供商,如:DaoCloud,阿里云等。這里,筆者使用的是阿里云。(注意的是,筆者操作系統(tǒng)是 Mac,其他操作系列參見(jiàn)阿里云操作文檔)


右鍵點(diǎn)擊桌面頂欄的 docker 圖標(biāo),選擇 Preferences ,在 Daemon 標(biāo)簽(Docker 17.03 之前版本為 Advanced 標(biāo)簽)下的 Registry mirrors 列表中將

https://xxx.mirror.aliyuncs.com 加到"registry-mirrors"的數(shù)組里,點(diǎn)擊 Apply & Restart 按鈕,等待 Docker 重啟并應(yīng)用配置的鏡像加速器。

本文題目:還在使用虛擬機(jī)?30分鐘教你快速入門(mén)Docker
本文來(lái)源:http://www.bm7419.com/news23/103573.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)App設(shè)計(jì)、網(wǎng)站營(yíng)銷(xiāo)軟件開(kāi)發(fā)、靜態(tài)網(wǎng)站網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開(kāi)發(fā)公司