zoukankan      html  css  js  c++  java
  • Docker 基础底层架构浅谈

    docker学习过程中,免不了需要学习下docker的底层技术,今天我们来记录下docker的底层架构吧!

    从上图我们可以看到,docker依赖于linux内核的三个基本技术:namespaces、CGroups、union FS;

    • namespaces
      管理着host中 全局唯一的资源,可以让每个容器都感觉只有自己在使用它。换句话是,namespace 实现了容器间资源的隔离,让容器拥有独立的hostname、ip、pid,同时确保一个容器中运行一个进程而且不能看到或者影响容器wait的其他进程。它使得容器看起来更像一个独立的计算机。
    • CGroups,全程Control Group
      CGroups是容器对使用的宿主机资源进行核算并限制的关键功能。linux os 可以通过 cgroup 设置进程使用CPU、内存和IO资源的限额。我们可以在 
      /sys/fs/cgroup 中找到cgroup 的“原型”。
    • union FS
      主要是对镜像也就是image 这一块作支持,采用copy-on-write 技术,让大家可以共用某一层,对于某些差异层的话,就可以在差异的内存中进行存储。
      docker原本是在ubuntu上开发的,ubuntu有 union fs这种支持,但是centos内核不支持,docker为了能够在centos下 开箱即用,所以弄了loop-lvm ,做到不用配置,但是这个东西官方明确说明 不建议在生成环境使用,所以通过网上查找资料,将loop-lvm  更换为direct-lvm。后续探讨如何在虚拟机上进行direct-lvm设置

    Libcontainer:是一个库,对我们上述的三个技术进行了封装。

    Docker Engine 用来控制容器 Container 的运行,以及镜像文件的拉取。

    PS.其他文章会对三个基本技术中的 CGroup 进行详细的测试描述: Docker资源限制实现——CGroups

  • 相关阅读:
    洛谷 P4001 [ICPC-Beijing 2006]狼抓兔子
    杂题20201201
    杂题20210103
    杂题20201010
    杂题20200928
    ACL1 Contest 1 简要题解
    杂题20200906
    杂题20200623
    USACO2020DEC Gold/Platinum 解题报告
    CSP-S2020游记
  • 原文地址:https://www.cnblogs.com/cxbhakim/p/8695930.html
Copyright © 2011-2022 走看看