最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker Runc容器生命周期詳細介紹

 更新時間:2016年12月02日 15:33:58   作者:feilengcui008  
這篇文章主要介紹了Docker Runc容器生命周期詳細介紹的相關資料,文章分析runc的容器生命周期的抽象、內(nèi)部實現(xiàn)以及狀態(tài)轉換圖。理解了runc的容器狀態(tài)轉換再對比理解docker client提供的容器操作命令的語義會更容易些

Docker Runc容器生命周期

容器的生命周期涉及到內(nèi)部的程序實現(xiàn)和面向用戶的命令行界面,runc內(nèi)部容器狀態(tài)轉換操作、runc命令的參數(shù)定義的操作、docker client定義的容器操作是不同的,比如對于docker client的create來說,

語義和runc就完全不同,這一篇文章分析runc的容器生命周期的抽象、內(nèi)部實現(xiàn)以及狀態(tài)轉換圖。理解了runc的容器狀態(tài)轉換再對比理解docker client提供的容器操作命令的語義會更容易些。

容器生命周期相關接口

  • 最基本的required的接口
    • Start: 初始化容器環(huán)境并啟動一個init進程,或者加入已有容器的namespace并啟動一個setns進程;執(zhí)行postStart hook; 阻塞在init管道的寫端,用戶發(fā)信號替換執(zhí)行真正的命令
    • Exec: 讀init管道,通知init進程或者setns進程繼續(xù)往下執(zhí)行
    • Run: Start + Exec的組合
    • Signal: 向容器內(nèi)init進程發(fā)信號
    • Destroy: 殺掉cgroups中的進程,刪除cgroups對應的path,運行postStop的hook
    • 其他
      • Set: 更新容器的配置信息,比如修改cgroups resize等
      • Config: 獲取容器的配置信息
      • State: 獲取容器的狀態(tài)信息
      • Status: 獲取容器的當前運行狀態(tài): created、running、pausing、paused、stopped
      • Processes: 返回容器內(nèi)所有進程的列表
      • Stats: 容器內(nèi)的cgroups統(tǒng)計信息
    • 對于linux容器定義并實現(xiàn)了特有的功能接口
      • Pause: free容器中的所有進程
      • Resume: thaw容器內(nèi)的所有進程
      • Checkpoint: criu checkpoint
      • Restore: criu restore

接口在內(nèi)部的實現(xiàn)

  • 對于Start/Run/Exec的接口是作為不同os環(huán)境下的標準接口對開發(fā)者暴露,接口在內(nèi)部的實現(xiàn)有很多重復的部分可以統(tǒng)一,因此內(nèi)部的接口實際上更簡潔,這里以linux容器為例說明
    • 對于Start/Run/Exec在內(nèi)部實現(xiàn)實際上只用到下面兩個函數(shù),通過傳入flag(容器是否處于stopped狀態(tài))區(qū)分是創(chuàng)建容器的init進程還是創(chuàng)建進程的init進程
      • start: 創(chuàng)建init進程,如果status == stopped,則創(chuàng)建并執(zhí)行newInitProcess,否則創(chuàng)建并執(zhí)行newSetnsProcess,等待用戶發(fā)送執(zhí)行信號(等在管道寫端上),用用戶的命令替換掉
      • exec: 讀管道,發(fā)送執(zhí)行信號
    • Start直接使用start
    • Run實際先使用start(doInit = true),然后exec
    • Exec實際先使用start(doInit = false), 然后exec

對用戶暴露的命令行參數(shù)與容器接口的對應關系,以linux容器為例

  • create -> Start(doInit = true)
  • start -> Exec
  • run -> Run(doInit = true)
  • exec -> Run(doInit = false)
  • kill -> Signal
  • delete -> Signal and Destroy
  • update -> Set
  • state -> State
  • events -> Stats
  • ps -> Processes
  • list
  • linux specific
    • pause -> Pause
    • resume -> Resume
    • checkpoint -> Checkpoint
    • restore -> Restore

runc命令行的動作序列對容器狀態(tài)機的影響

  • 對于一個容器的生命周期來說,穩(wěn)定狀態(tài)有4個: stopped、created、running、paused
  • 注意下面狀態(tài)轉換圖中的動作是runc命令行參數(shù)動作,不是容器的接口動作,這里沒考慮checkpoint相關的restore狀態(tài)
   delete
   |------|  /-------------------------------------------------------------|
   |   | /                  |----- start ---|     |
   |   V /                   |        |     |
  |---------| ----------- create ----------> |---------|<---------/     |
  | stopped |                | created |------------|    |
  |---------| <-------- delete(with kill)--- |---------|      |    |
   ^  ^                      |       |    |
   |  |                      |       |   run
   |  |--------------- delete(-f with kill) ---| exec      |    |
 delete(-f with kill)               |  |       |    |
   |                      |  |       |    |
   |           resume        |  V       |    |
  |---------| -----------------------------> |----------|      |    |
  | paused |                | running |<----------|-------|
  |---------| <---------------------------- |----------|      |
    ^           pause       ^    |      |
    |                    |    |      |
    |                    |--exec--|      |
    |                               |
    |--------------------------- pause ---------------------------|

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關文章

  • 讓非root用戶構建Docker鏡像的三種方法

    讓非root用戶構建Docker鏡像的三種方法

    在默認情況下,Docker?需要?root?權限或?sudo?才能運行,這對于日常開發(fā)和?CI/CD?流水線可能不夠方便,那么,如何讓?非?root?用戶?也能構建和運行?Docker?容器呢?本篇文章將介紹?三種方法?來實現(xiàn)這一目標,需要的朋友可以參考下
    2025-04-04
  • Docker容器簡單部署nginx過程解析

    Docker容器簡單部署nginx過程解析

    這篇文章主要介紹了Docker容器簡單部署nginx過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • docker鏡像無法上傳的解決方法

    docker鏡像無法上傳的解決方法

    大家都知道創(chuàng)建鏡像有很多方法,用戶可以從 Docker Hub 獲取已有鏡像并更新,也可以利用本地文件系統(tǒng)創(chuàng)建一個。但是工作中卻發(fā)現(xiàn)docker鏡像怎么都無法上傳,通過在網(wǎng)上查找資料終于解決了,下面將方法分享給大家,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-11-11
  • 如何修改docker容器中MySQL的用戶密碼

    如何修改docker容器中MySQL的用戶密碼

    本文主要介紹了如何修改docker容器中MySQL的用戶密碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • Docker 鏡像加速訪問的幾種方法

    Docker 鏡像加速訪問的幾種方法

    本文介紹了DockerHub訪問速度慢或不穩(wěn)定時的替代方案,包括配置國內(nèi)鏡像源、使用一鍵腳本拉取鏡像以及鏡像導出與導入,感興趣的可以了解一下
    2024-12-12
  • docker部署ES集群的實現(xiàn)

    docker部署ES集群的實現(xiàn)

    本文介紹了如何在Ubuntu20.04.2 LTS環(huán)境下通過Docker部署Elasticsearch7.10.1集群,詳細步驟包括從Docker鏡像倉庫拉取Elasticsearch鏡像,創(chuàng)建文件映射目錄,運行Docker容器,配置Elasticsearch的端口和權限,以及集群的相關設置,感興趣的可以了解一下
    2024-10-10
  • Docker安裝Nacos容器并根據(jù)Nginx實現(xiàn)負載均衡

    Docker安裝Nacos容器并根據(jù)Nginx實現(xiàn)負載均衡

    本文主要介紹了Docker安裝Nacos容器并根據(jù)Nginx實現(xiàn)負載均衡,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-01-01
  • docker運行nginx綁定配置文件失敗原因以及問題解決

    docker運行nginx綁定配置文件失敗原因以及問題解決

    最近工作中在使用docker運行nginx的時候遇到了些問題,下面分享給大家,這篇文章主要給大家介紹了關于docker運行nginx綁定配置文件失敗原因以及問題解決的相關資料,需要的朋友可以參考下
    2023-02-02
  • 使用Jenkins+docker打包部署后端服務的實現(xiàn)

    使用Jenkins+docker打包部署后端服務的實現(xiàn)

    本文主要介紹了使用Jenkins+docker打包部署后端服務的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • Docker?Memcached?容器化部署的實現(xiàn)

    Docker?Memcached?容器化部署的實現(xiàn)

    memcached是一套分布式的高速緩存系統(tǒng),本文主要介紹了Docker?Memcached?容器化部署的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-03-03

最新評論

高尔夫| 隆昌县| 泗洪县| 盐津县| 阳曲县| 根河市| 香港 | 克东县| 呼和浩特市| 喀喇沁旗| 新巴尔虎左旗| 陆川县| 九江县| 白水县| 资溪县| 西乌| 平湖市| 乌苏市| 舒城县| 揭西县| 龙州县| 吉水县| 定陶县| 儋州市| 余姚市| 浦北县| 定日县| 胶南市| 合水县| 婺源县| 泾阳县| 阜城县| 松溪县| 靖西县| 吐鲁番市| 前郭尔| 宁明县| 桐城市| SHOW| 望谟县| 正蓝旗|