日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Docker最全教程——从理论到实战(五)

發(fā)布時間:2023/12/4 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker最全教程——从理论到实战(五) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在筆者參加騰訊容器服務(wù)技術(shù)交流會時,我們了解到了藏區(qū)牧民的目前的生活艱辛狀況,因此除了在同事朋友之間推薦其土特產(chǎn)之外,我們也在此進行初步分享,希望略盡綿薄之力,能夠幫助到他們:

貨真價實、確保都是3700米海拔以上的超風(fēng)干牦牛肉,115元一斤包郵(貨真價實、低于淘寶京東、我們不賺差價),有香辣、五香兩種口味,三斤牦牛肉才能做出一斤超風(fēng)干牛肉!希望這個冬天,我們能夠給他們一點點溫暖!有購買意向的朋友可以填寫下面的表單,也可以直接打開【閱讀原文】:

http://s6xvpjrifokd29yh.mikecrm.com/8ZRMvSn

目錄


創(chuàng)建自定義 Docker 鏡像


創(chuàng)建了Dockerfile之后,需為應(yīng)用程序中的每項服務(wù)創(chuàng)建一個相關(guān)鏡像。如果應(yīng)用程序由單個服務(wù)或 Web 應(yīng)用程序組成,則只需創(chuàng)建一個鏡像。

我們可以使用docker build命令來創(chuàng)建鏡像,例如:

docker build ./ -t {鏡像名稱}

鏡像打包好后,我們使用docker image ls命令即可查看當(dāng)前鏡像:

注意:Docker鏡像使用分層存儲的架構(gòu),也就是說鏡像實際是由多層文件系統(tǒng)聯(lián)合組成。鏡像構(gòu)建時,會一層層構(gòu)建,前一層是后一層的基礎(chǔ)。每一層構(gòu)建完就不會再發(fā)生改變,后一層上的任何改變只發(fā)生在自己這一層。因為分層存儲的特征,使得鏡像的復(fù)用、定制變的更為容易。甚至可以用之前構(gòu)建好的鏡像作為基礎(chǔ)層,然后進一步添加新的層,以定制自己所需的內(nèi)容,構(gòu)建新的鏡像。所以,當(dāng)我們使用Docker images命令,會列出這么多的鏡像,我們可以定期清理那些無用的鏡像。

如果使用 Visual Studio 創(chuàng)建帶 Docker 支持的項目時,不會顯式創(chuàng)建鏡像。我們按下 F5 并運行時,VS就會自動創(chuàng)建鏡像,不會出現(xiàn)明顯的過程(在輸出面板可以了解整個過程,如下圖所示),但我們需要了解其原理,否則出現(xiàn)問題將無從下手。


在 docker-compose.yml中定義服務(wù)


關(guān)于Compose

Compose是一個用于定義和運行多Docker應(yīng)用程序的工具。使用Compose,我們可以使用YAML文件來配置應(yīng)用程序的服務(wù)。然后,使用單個命令,我們就可以從配置中創(chuàng)建并啟動所有服務(wù)。

Compose適用于所有環(huán)境:生產(chǎn)環(huán)境、模擬(演示)環(huán)境、開發(fā)環(huán)境和測試環(huán)境以及CI工作流程。

主要功能和特性:

  • 單個主機上的多個隔離環(huán)境

    Compose使用項目名稱來隔離環(huán)境,因此可以根據(jù)不同的環(huán)境要求來進行定義。

  • 創(chuàng)建容器時保留卷數(shù)據(jù)

    Compose會保留服務(wù)使用的所有卷和數(shù)據(jù)。當(dāng)使用docker-compose up命令運行時,如果發(fā)現(xiàn)該服務(wù)之前運行過,它會將進行增量操作,可確保在卷中創(chuàng)建的數(shù)據(jù)都不會丟失。

  • 僅重新創(chuàng)建已更改的容器

    Compose存在緩存,可用于創(chuàng)建容器。當(dāng)重新啟動未更改的服務(wù)時,Compose將重用現(xiàn)有容器。

  • 可以定義變量,而且可以根據(jù)不同環(huán)境不同用戶之間進行組合使用

    Compose支持Compose文件的變量定義,我們可以使用這些變量為不同環(huán)境或不同用戶進行自定義組合。

另外,Compose能夠通過命令管理應(yīng)用程序的整個生命周期,通過命令可以:

  • 啟動,停止和重建服務(wù)等

  • 查看正在運行的服務(wù)的狀態(tài)

  • 通過流輸出正在運行的服務(wù)的日志

  • 對某個服務(wù)執(zhí)行命令

注意:Docker for Windows安裝包括:安裝提供 Docker Engine,Docker CLI客戶端,Docker Compose,Docker Machine和 Kitematic。也就是如果是使用Docker for Windows的用戶,無需再獨立安裝Docker Compose。

我們可以通過運行以下命令來確認我們本地的環(huán)境:

docker-compose -v


常見場景

  • 開發(fā)或本地環(huán)境運行多個服務(wù)

    在開發(fā)過程時,在隔離環(huán)境中運行應(yīng)用程序并與之交互的能力至關(guān)重要。Compose命令行工具可用于創(chuàng)建環(huán)境并與之交互。比如通過Compose文件,配置所有應(yīng)用程序的服務(wù)依賴(數(shù)據(jù)庫,消息隊列,高速緩存,Web服務(wù)的API,等等),然后使用單個命令(docker-compose up)為每個依賴項創(chuàng)建和啟動一個或多個容器,使整個程序能夠正常運行起來。

  • 自動化測試環(huán)境

    任何持續(xù)部署或持續(xù)集成過程的一個重要部分是自動化測試套件。自動化端到端測試需要一個運行測試的環(huán)境。Compose提供了一種方便的方法來創(chuàng)建和銷毀隔離的測試環(huán)境。我們只需要通過在Compose文件,即可定義完整環(huán)境,并且可以在幾個命令中創(chuàng)建和銷毀這些環(huán)境,如下所示:

  • 單主機部署


使用Compose

使用Compose有以下三個步驟:

  • 使用Dockerfile定義應(yīng)用環(huán)境,以便在任意地方進行復(fù)制

  • 在 docker-compose.yml 中定義組合應(yīng)用,以便它們可以在隔離的環(huán)境中一起運行

  • 最后,執(zhí)行docker-compose up命令,Compose 將啟動并運行整個應(yīng)用程序。

  • 由此可見,第二步?jīng)Q定了Compose的執(zhí)行,一個簡單的docker-compose.yml文件如下所示:

    其定義了web和redis兩個應(yīng)用。接下來,我們一起來了解docker-compose.yml 文件。


    了解docker-compose.yml

    借助 docker-compose.yml 文件,我們可以定義一組相關(guān)服務(wù),通過部署命令將其部署為組合應(yīng)用程序。簡單的說,我們可以通過docker-compose.yml來定義多個服務(wù),以便一次執(zhí)行。

    這里筆者以Magicodes.Admin為例,基礎(chǔ)框架提供了后臺接口服務(wù)以及后臺前端應(yīng)用兩個,那么我們可以定義docker-compose.yml 文件以便部署為組合應(yīng)用程序,也就是說,一個命令托管和運行多個服務(wù):

    以上是一個簡化的配置,定義了兩個服務(wù)以及環(huán)境變量和端口。值得說明的是,在docker中我們無法訪問localDb,這時我們建議訪問獨立的數(shù)據(jù)庫服務(wù)或者使用數(shù)據(jù)庫鏡像,例如:

    sql.data:

    image: mssql-server-linux:latest

    environment:

    - SA_PASSWORD=Pass@word

    - ACCEPT_EULA=Y

    ports:

    - "5433:1433"

    注意:SQL Server也提供了Docker鏡像,并且支持Linux容器。在上面的配置中,通過環(huán)境變量設(shè)置了sa賬號的密碼。值得注意的是,我們并不推薦在生產(chǎn)環(huán)境中使用數(shù)據(jù)庫的容器鏡像來托管數(shù)據(jù),這點我們后續(xù)再來詳聊。


    了解YAML語言

    很多教程并不會講述這點,但是筆者認為這點也非常重要,因為了解YAML的語法和規(guī)范,可以在開發(fā)調(diào)測的過程中避免很多錯誤,也便于我們更好的配置基于YAML語法的文件——比如docker-compose.yml文件。


    什么是YAML?

    YAML 是一種簡潔的非標記語言。YAML以數(shù)據(jù)為中心,使用空白,縮進,分行組織數(shù)據(jù),從而使得表示更加簡潔易讀。

    這里提供一個YAML語法驗證網(wǎng)站:http://nodeca.github.io/js-yaml/

    基本規(guī)則

  • 大小寫敏感

  • 使用縮進表示層級關(guān)系

  • 禁止使用tab縮進,只能使用空格鍵

  • 縮進長度沒有限制,只要元素對齊就表示這些元素屬于一個層級

  • 使用#表示注釋

  • 字符串可以不用引號標注

  • YAML中允許表示三種格式,分別是常量值,對象和數(shù)組,如下所示:


    對于YAML的講解,我們就說到這里,我們繼續(xù)本篇內(nèi)容。


    docker-compose.yml文件配置項

    docker-compose.yml 文件不僅指定正在使用的容器,還指定如何單獨配置各容器。常用的配置項如下所示:

    • build:定義鏡像生成,可以指定Dockerfile文件所在的目錄路徑,支持絕對路徑和相對路徑;

    • image:從指定的鏡像中啟動容器,可以是存儲倉庫、標簽以及鏡像 ID,如果鏡像不存在,Compose 會自動拉去鏡像;

    • environment:定義環(huán)境變量和配置;

    • ports:定義端口映射,比如上面配置中將容器上的公開端口 80 轉(zhuǎn)接到主機上的外部端口 9901和9902;

    • depends_on,定義依賴關(guān)系。此定義會讓當(dāng)前服務(wù)處于等待狀態(tài),直到這些依賴服務(wù)啟動。比如某個服務(wù)依賴數(shù)據(jù)庫服務(wù),那么通過此配置解決了服務(wù)的啟動順序的問題;

    • volumes,掛載一個目錄或者一個已存在的數(shù)據(jù)卷容器,可以直接使用 HOST:CONTAINER 這樣的格式,或者使用 HOST:CONTAINER:ro 這樣的格式,后者對于容器來說,數(shù)據(jù)卷是只讀的,這樣可以有效保護宿主機的文件系統(tǒng);

    • context,指定Dockerfile 的文件路徑,也可以是到鏈接到 git 倉庫的 url;

    • args,指定構(gòu)建參數(shù),這些參數(shù)只能在構(gòu)建過程中訪問;

    • target,定義構(gòu)建指定的階段Dockerfile,比如針對不同階段使用不同的dockerfile,開發(fā)階段使用支持編譯調(diào)試的dockerfile,而生產(chǎn)環(huán)境,則使用輕量級的dockerfile;command,覆蓋默認命令;

    • container_name,指定自定義容器名稱,而不是生成的默認名稱。

    由于篇幅有限,我們就不提供過多介紹和示例了。不過我們建議大家訪問此地址,來做一個全面的了解:

    https://docs.docker.com/compose/compose-file/#reference-and-guidelines

    最后,分享幾個小技巧:

    • 可以通過配置項depends_on來定義依賴關(guān)系,這點對于控制服務(wù)的執(zhí)行順序尤為重要,比如先啟動數(shù)據(jù)庫然后再啟動web服務(wù)。

    • 如何使用JSON文件進行配置?可以指定文件名稱,如下所示:

      docker-compose -f docker-compose.json up

    • 如何分階段構(gòu)建?推薦使用target配置項。


    Visual Studio和docker-compose

    我們定義完docker-compose.yml之后,如果是使用Visual Studio進行開發(fā),通過其Docker tool會讓開發(fā)調(diào)測變得非常簡單和易用。對于未啟用docker支持的項目,我們可以通過右鍵菜單進行啟用:

    啟用之后,會自動添加相關(guān)支持(包括生成dockerfile、docker-compose.yml以及.dockerignore等),然后通過其docker工具可以直接啟動運行并且支持調(diào)試,如下圖所示:

    點擊工具欄的【Docker】按鈕或者按下【F5】均可直接運行并調(diào)試,啟動后如下圖所示:

    運行完成后,VS還會自動打開相關(guān)服務(wù)的默認頁。

    如果不依賴Visual Studio進行運行,我們在下節(jié)進行講述。


    前期內(nèi)容

    Docker最全教程——從理論到實戰(zhàn)(一)

    Docker最全教程——從理論到實戰(zhàn)(二)

    Docker最全教程——從理論到實戰(zhàn)(三)

    Docker最全教程——從理論到實戰(zhàn)(四)

    長按識別二維碼,了解更多精彩內(nèi)容

    如果喜歡作者的文章,請關(guān)注“magiccodes”訂閱號以便第一時間獲得最新內(nèi)容。本文版權(quán)歸作者和湖南心萊信息科技有限公司共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。


    QQ群:

    編程交流群<85318032>?

    產(chǎn)品交流群<897857351>?


    點“閱讀原文”填寫購買信息

    總結(jié)

    以上是生活随笔為你收集整理的Docker最全教程——从理论到实战(五)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。