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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

docker overview

發布時間:2024/9/5 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 docker overview 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

docker是一個可以開發、傳輸和運行程序的開放平臺。Docker讓我們可以將應用程序從基礎架構中拆分出來,這樣我們就可以快速的分發我們的軟件。使用Docker,可以像管理應用程序一樣去管理基礎設施。利用Docker的方法學快速的去傳輸、測試和部署代碼,我們能明顯縮短代碼的編寫到部署上線的時間。也就是說,Docker將應用程序和底層基礎設施結偶,可以明顯加快應用程序的迭代速度,這一點對于業務發展迅速的互聯網公司十分重要。

Docker平臺

Docker為我們提供在一種被稱為容器這一相對隔離程度較低的環境中打包和運行應用程序的能力。隔離性和安全性允許我們可以在一臺主機上同時運行多個容器。容器是輕量級的,因為他們不需要像虛擬機一樣引入hypervisor的額外性能消耗,而是直接運行在主機的內核里面。這意味著比起使用虛擬機,我們可以在一臺宿主機上運行更多的容器,我們甚至可以在虛擬機上運行Docker容器。

Docker提供工具和平臺來管理容器的生命周期:

  • 使用容器來開發應用程序和對應的依賴;
  • 容器成為應用程序分發和測試的單元;
  • 當一切就緒后,將應用程序部署到生產環境,作為一個容器或者被編排的服務。無論你的生產環境是本地數據中心、云環境或者兩者的混合,這些容器運行效果是一致的;

Docker引擎

docker引擎是個client-server的應用,包含如下組件:

  • dockerd守護進程,作為docker server;
  • REST API:指定了和dockerd進程如何交互以及能執行哪些指令;
  • docker CLI client:docker的命令行客戶端

CLI通過腳本或者直接的CLI命令使用docker REST API來控制或者和Docker守護進程交互。
一些其他的Docker應用使用底層的API和CLI。

守護進程負責創建和管理docker對象:

  • image
  • container
  • networks
  • volums

Docker的用處

快速持續分發應用。
Docker通過允許開發者使用本地容器來在標準化環境中進行開發,從而使得應用程序開發生命周期流程化。容器很好的支持了持續集成和持續分發。

考慮下面的場景:

  • 開發者本地編寫代碼,使用Docker容器將代碼分享給同事;
  • 他們使用Docker將應用推送到測試環境,然后執行自動和手動測試;
  • 當開發者發現 bugs的時候,他們在開發環境修復bug,然后再一次將其部署到測試環境進行測試驗證;
  • 當測試完畢以后,使得fix線上生效,僅僅需要將被更新的鏡像推送到生產環境即可;

響應式開發和伸縮

Docker給予容器的平臺允許高度可移植的工作流。Docker容器能運行在開發者的筆記本,在物理或者虛擬機上,在云環境中,或者在這些環境的混合環境中。

在相同的硬件上運行更多的工作流

Docker是輕量級和快速的。它提供一個可行的、經濟的替代給予hypervisor虛擬機的方案,因此你能使用計算機資源更多的來完成業務目標。Docker完美支持高密度環境,對于中小型開發,你可以使用較少的資源做更多的事情。

Docker架構

Docker架構圖:

  • Client:docker client
  • Docker Host:物理機
  • Registry:docker鏡像倉庫

  • Docker daemon:
    dockerd監聽Docker API的請求,然后管理類似鏡像、容器、網絡和卷。一個守護進程也能和其他守護進程進行通信從而來管理Docker服務。
  • Docker client
    docker client docker是一些docker用戶和Docker交互的主要方式。當你使用類似docker run的命令,客戶端將這些命令發送給dockerd守護進程,由dockerd負責解釋執行。docker使用Docker API。Docker client也能和多個守護進程通信。
  • Docker registries
    docker registry存儲Docker鏡像。Docker Hub和Docker Cloud是公開的registry,任何人都能訪問 使用它。Docker默認配置是去Docker Hub上搜索鏡像。你能搭建自己的私有docker registry。

當你使用docker pull或者docker run命令的時候,被需要的鏡像將會從你配置的resigtry中拉取下來。當你使用docker push的時候,你的鏡像會被推送到你配置的registry。

Docker store運行你購買和售賣Docker鏡像或者免費發布他們。例如,你可以購買一個包含軟件提供商提供的服務或程序的鏡像,然后使用這個鏡像來將程序部署到你的測試 預發和生產環境。對于更新,你僅僅需要拉取一個新版本的鏡像,然后重新部署這個容器即可。

Docker objects

當你使用docker的時候,你正在創建和使用鏡像、容器、網路、卷、插件和其他對象。下面是對一些對象的簡要介紹。

  • images
    鏡像是一個含有創建一個Docker容器指令的只讀模版。通常,一個鏡像是基于另一個鏡像加上一些定制化。例如,你也許基于Ubuntu鏡像構建了一個新的鏡像,但是這個新的鏡像中安裝了Apache Web Server和你的應用程序,同時還有一些程序運行的配置細節。

你可以創建你自己的鏡像或者使用別人創建的發布在registry商現成的鏡像。為了構建你自己的鏡像,你性能使用簡單語法創建一個Dockerfile,這個文件定義了創建一個鏡像和運行它的必要步驟。在Dockerfile中的每個指令都會在鏡像中創建一層。當你改變Dockerfile然后重新構建鏡像的時候,僅僅那些發生實際改變的層才會被重新構建。這就是使得鏡像相對于其他虛擬化技術更加輕量快速的原因之一。

  • containers
    一個容器是鏡像的可運行的實例。你能使用Docker API或者CLI創建、啟動、停止、移動或者刪除一個容器。你也能將一個容器鏈接到一個或多個網絡,給容器附加存儲,甚至基于當前的狀態構建新的鏡像。

默認的,容器與容器之間、容器與宿主機之間還是相對隔離的很好的。你可以控制一個容器的網絡、存儲或者其他底層子系統是如何同其他容器或者宿主機隔離的。

當你創建或者啟動一個容器的時候,鏡像和一些你提供的配置就定義一個容器。當一個容器被移除的時候,任何沒有進行持久存儲的狀態改變都將丟失。

docker run命令的例子:

下面的命令運行一個ubuntu容器,交互式的將本地的命令行會話附加到容器,然后執行/bin/bash命令。

docker run -i -t ubuntu /bin/bash

當你運行這個命令的時候,會發生下面的事情:

  • 如果你沒有ubuntu鏡像在本地,Docker將從你配置的registry中拉取,正如你手動執行 docker pull ubuntu一樣。
  • Docker創建一個新的容器,正如你手動運行docker container create命令。
  • Docker分配一個讀寫文件系統給該容器,作為它的final layer。這個允許一個運行的容器能夠在他自己的文件系統里面創建或者修改文件和目錄。
  • Docker創建一個網絡接口來將容器鏈接到默認的網絡,因為你沒有指定網絡選項。這個包括指定一個IP地址給容器。默認的,容器能夠使用宿主機的網絡連接到外部網絡。
  • Docker啟動容器然后執行 /bin/bash命令。因為容器正在以交互式模式在運行,且已經附加到你的終端,所以你能夠使用你的鍵盤進行輸入,同時輸出也會log到你的終端上。
  • 當你敲擊exit來結束/bin/bash命令的時候,這個容器停止但是沒有被移除,你可以啟動它或者移除它。
    • service

    Service允許你能跨多個Docker守護進程進行容器的伸縮,這些工作起來就像是一個擁有多個manager和worker的群體swarm。每個swarm的成員就是一個Docker守護進程,這些守護進程使用Dokcer API進行通信。一個服務運行你定一個期望的狀態,例如服務熱備份的數量。默認的,服務是跨所有work節點進行負載均衡的。對于服務消費者,Docker服務好像是一個應用。從Docker1.12開始,Docker引擎支持swarm模式。

    底層技術

  • NameSpace
    Docker使用Linux提供的namespace功能提供隔離的工作空間,這個叫做容器。當創建一個docker容器的時候,docker會為這個容器創建一系列的namespace。
    namespace提供一個隔離層。運行在不同的namespace的容器,每一項訪問都限制在自己對應的namespace里面。
  • Docker引擎在linux上面使用下面的namspace:

    • pid 進程隔離
    • net:管理網絡接口
    • ipc:管理ipc資源的訪問
    • mnt:管理文件系統掛載點
    • uts:隔離內核和版本標志(uts:unix timesharing system)
  • Cgroup
  • 在Linux上的Docker引擎也依賴control groups簡稱cgroup技術。一個cgroup限制一個應用使用指定的資源集合。cgroup允許docker引擎讓容器共享硬件資源,同時施加一些限制和約束。例如,我們可以對某個容器限制其可用的內存大小。

  • UnionFS
  • Union File Systems通過創建不同的層,來達到非常輕量快速的目的。Docker引擎使用UFS為容器提供構建塊。Docker Image的分層就是利用UnionFS來實現的。

  • libcontainer
  • Docker將namespace、cgroup、ufs結合在一起成為了一個wrapper,格式為libcontainer。

    轉載于:https://www.cnblogs.com/Spground/p/9625687.html

    總結

    以上是生活随笔為你收集整理的docker overview的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。