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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【转】Docker 容器化核心概念

發(fā)布時(shí)間:2023/12/2 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】Docker 容器化核心概念 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Docker
VM vs Docker

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

示例一:部署 MySQL 服務(wù)

首先以一個(gè)在 Linux 部署 MySQL 服務(wù)器為例,相信每個(gè)開發(fā)或運(yùn)維人員都有個(gè)這個(gè)經(jīng)歷,平均消耗時(shí)間應(yīng)該至少在2個(gè)小時(shí)以上。而如果使用 docker 來實(shí)現(xiàn),只需要5分鐘,兩個(gè)步驟:

  • 在linux上安裝docker環(huán)境
  • 運(yùn)行命令:docker run -d --name mysql -p 3306:3306 -v /home/freeman/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=pwd mysql:5.7.14

示例二:部署公司項(xiàng)目

以往的流程:開發(fā)人員開發(fā)并測(cè)試完成,再交給運(yùn)維人員部署,配置文件復(fù)雜似的在配置過程中耗費(fèi)了太多的時(shí)間和精力。而如果使用新的開發(fā)部署模式,開發(fā)人員將配置作為項(xiàng)目的構(gòu)成部分集成到產(chǎn)品中去,不需要運(yùn)維人員關(guān)心具體的配置。

核心概念

  • LXC Linux Container的簡寫, 提供輕量級(jí)的虛擬化,以便隔離進(jìn)程和資源,而且不需要提供指令解釋機(jī)制以及全虛擬化的其他復(fù)雜性。LXC在資源管理方面依賴于Linux內(nèi)核的cgroups 子系統(tǒng),LXC在隔離控制方面依賴于Linux內(nèi)核的namespace 特性.

  • cgroup Control Groups的縮寫,是Linux內(nèi)核提供的一種可以限制、記錄、隔離進(jìn)程組(process groups)所使用的物理資源(如:cpu,memory, io 等等)的機(jī)制。最初由google的工程師提出,后來被整合進(jìn)Linux內(nèi)核。Cgroups也是LXC為實(shí)現(xiàn)虛擬化所使用的資源管理手段,可以說沒有cgroups就沒有LXC。

  • namespaces 提供一種資源隔離方案。PID,IPC,Network等系統(tǒng)資源不再是全局性的,而是屬于特定的 Namespace。每個(gè) Namespace 里面的資源對(duì)其他 Namespace 都是透明的。要?jiǎng)?chuàng)建新的Namespace,只需要在調(diào)用 clone 時(shí)指定相應(yīng)的flag。Linux Namespaces 機(jī)制為實(shí)現(xiàn)基于容器的虛擬化技術(shù)提供了很好的基礎(chǔ),LXC就是利用這一特性實(shí)現(xiàn)了資源的隔離。不同 container 內(nèi)的進(jìn)程屬于不同的 Namespace,彼此透明,互不干擾。

  • Docker
    一個(gè)實(shí)現(xiàn)容器化的平臺(tái),它提供一整套工具(docker-engine, docker-compose等等)讓容器化變得異常簡單。

解決的問題

  • 簡化配置
    這是 Docker 公司宣傳的 Docker 的主要使用場(chǎng)景。虛擬機(jī)的最大好處是能在你的硬件設(shè)施上運(yùn)行各種配置不一樣的平臺(tái)(軟件、系統(tǒng)),Docker 在降低額外開銷的情況下提供了同樣的功能。它能讓你將運(yùn)行環(huán)境和配置放在代碼中然后部署,同一個(gè) Docker 的配置可以在不同的環(huán)境中使用,這樣就降低了硬件要求和應(yīng)用環(huán)境之間耦合度。

  • 代碼流水線(Code Pipeline)管理
    前一個(gè)場(chǎng)景對(duì)于管理代碼的流水線起到了很大的幫助。代碼從開發(fā)者的機(jī)器到最終在生產(chǎn)環(huán)境上的部署,需要經(jīng)過很多的中間環(huán)境。而每一個(gè)中間環(huán)境都有自己微小的差別,Docker 給應(yīng)用提供了一個(gè)從開發(fā)到上線均一致的環(huán)境,讓代碼的流水線變得簡單不少。

  • 提高開發(fā)效率
    這就帶來了一些額外的好處:Docker 能提升開發(fā)者的開發(fā)效率。不同的開發(fā)環(huán)境中,我們都想把兩件事做好。一是我們想讓開發(fā)環(huán)境盡量貼近生產(chǎn)環(huán)境,二是我們想快速搭建開發(fā)環(huán)境。理想狀態(tài)中,要達(dá)到第一個(gè)目標(biāo),我們需要將每一個(gè)服務(wù)都跑在獨(dú)立的虛擬機(jī)中以便監(jiān)控生產(chǎn)環(huán)境中服務(wù)的運(yùn)行狀態(tài)。然而,我們卻不想每次都需要網(wǎng)絡(luò)連接,每次重新編譯的時(shí)候遠(yuǎn)程連接上去特別麻煩。這就是 Docker 做的特別好的地方,開發(fā)環(huán)境的機(jī)器通常內(nèi)存比較小,之前使用虛擬的時(shí)候,我們經(jīng)常需要為開發(fā)環(huán)境的機(jī)器加內(nèi)存,而現(xiàn)在 Docker 可以輕易的讓幾十個(gè)服務(wù)在 Docker 中跑起來。

  • 隔離應(yīng)用
    有很多種原因會(huì)讓你選擇在一個(gè)機(jī)器上運(yùn)行不同的應(yīng)用,比如之前提到的提高開發(fā)效率的場(chǎng)景等。我們經(jīng)常需要考慮兩點(diǎn),一是因?yàn)橐档统杀径M(jìn)行服務(wù)器整合,二是將一個(gè)整體式的應(yīng)用拆分成松耦合的單個(gè)服務(wù)。

  • 整合服務(wù)器
    正如通過虛擬機(jī)來整合多個(gè)應(yīng)用,Docker 隔離應(yīng)用的能力使得 Docker 可以整合多個(gè)服務(wù)器以降低成本。由于沒有多個(gè)操作系統(tǒng)的內(nèi)存占用,以及能在多個(gè)實(shí)例之間共享沒有使用的內(nèi)存,Docker 可以比虛擬機(jī)提供更好的服務(wù)器整合解決方案。

  • 調(diào)試能力
    Docker 提供了很多的工具,這些工具不一定只是針對(duì)容器,但是卻適用于容器。它們提供了很多的功能,包括可以為容器設(shè)置檢查點(diǎn)、設(shè)置版本和查看兩個(gè)容器之間的差別,這些特性可以幫助調(diào)試 Bug。

  • 多租戶環(huán)境
    另外一個(gè)Docker有意思的使用場(chǎng)景是在多租戶的應(yīng)用中,它可以避免關(guān)鍵應(yīng)用的重寫。我們一個(gè)特別的關(guān)于這個(gè)場(chǎng)景的例子是為IoT(譯者注:物聯(lián)網(wǎng))的應(yīng)用開發(fā)一個(gè)快速、易用的多租戶環(huán)境。這種多租戶的基本代碼非常復(fù)雜,很難處理,重新規(guī)劃這樣一個(gè)應(yīng)用不但消耗時(shí)間,也浪費(fèi)金錢。使用Docker,可以為每一個(gè)租戶的應(yīng)用層的多個(gè)實(shí)例創(chuàng)建隔離的環(huán)境,這不僅簡單而且成本低廉,當(dāng)然這一切得益于Docker環(huán)境的啟動(dòng)速度和其高效的diff命令。

  • 快速部署
    在虛擬機(jī)之前,引入新的硬件資源需要消耗幾天的時(shí)間。Docker的虛擬化技術(shù)將這個(gè)時(shí)間降到了幾分鐘,Docker只是創(chuàng)建一個(gè)容器進(jìn)程而無需啟動(dòng)操作系統(tǒng),這個(gè)過程只需要秒級(jí)的時(shí)間。

  • 常用命令

    進(jìn)入容器交互模式 docker exec -it container-name /bin/bash
    強(qiáng)制刪除所有容器(包括當(dāng)前正在運(yùn)行的容器) docker rm -f $(docker ps -a -q)



    作者:我是柯南
    鏈接:https://www.jianshu.com/p/297395270278
    來源:簡書
    著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

    轉(zhuǎn)載于:https://www.cnblogs.com/Danny-test/p/9132120.html

    總結(jié)

    以上是生活随笔為你收集整理的【转】Docker 容器化核心概念的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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