• Docker学习记录


    一、基础概念

    镜像(Image):Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。

    镜像仓库(Registry):Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。

    有时候使用Docker Hub这样的公共仓库可能不方便,这种情况下用户可以使用registry创建一个本地仓库供私人使用,这点跟Maven的管理类似。

    容器(Container):容器是独立运行的一个或一组应用,是镜像运行时的实体。

    Docker 主机(Host):一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。

    Docker 客户端(Client):Docker 客户端通过命令行或者其他工具使用 Docker SDK (https://docs.docker.com/develop/sdk/) 与 Docker 的守护进程通信。

    数据卷(Volume):因为Docker里产生的数据在容器删除后就会丢失。所以 Docker 提出了卷的概念。

    卷是容器上的一个或多个目录(即:多个卷),由 Docker daemon 挂载到容器中。此类目录可绕过联合文件系统,与宿主机上的某目录绑定(即关联)。所以卷不属于联合文件系统。

    主要作用是用来持久化保存和共享容器的数据。

    Docker Machine:Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

    结构图

    二、状态

    三、底层核心

    namespace

    命名空间(namespaces)是 Linux 为我们提供的用于分离进程树、网络接口、挂载点以及进程间通信等资源的方法。

    CGroups(control groups)

    UnionFS(union file system)

    UnionFS 其实是一种为 Linux 操作系统设计的用于把多个文件系统『联合』到同一个挂载点的文件系统服务。

    AUFS 即 Advanced UnionFS 其实就是 UnionFS 的升级版,它能够提供更优秀的性能和效率。

    Docker 镜像其实本质就是一个压缩包文件。镜像文件的分层文件系统。

    Docker镜像采用分层构建的机制,最底层为bootfs,其上为rootfs.

      bootfs: 用于系统引导文件系统,包括bootloader和kernel,容器启动完成后,bootfs会被卸载,以节省内存空间.

      rootfs: 它在运行中的docker容器中变现为根文件系统.

    Docker容器实例:

    此镜像显示了Docker的镜像层级,从上到下分别为:

      可写层

      add Apache 和 add emacs(类似于vim的编辑器): 这两层为自己通过yum安装在镜像中的工具.

      Debian: 这是为安装的工具提供的基本的最小安装的根文件系统已共Apache能运行起来.这里使用的是Debian.还可以使用CentOS等.

      bootfs: 这一层则是启动Debian这个rootfs所需的bootloader和kernel,通常在将Debian启动起来后,它将自动被卸载.

    联合文件系统层次结构实例

    四、隔离机制

    进程隔离(namespaces)

    网络隔离(namespaces)

    文件系统隔离(挂载)(namespaces)

    物理资源隔离(例如 CPU、内存、磁盘 I/O 和网络带宽。)(CGroup)

    五、Docker 存储驱动

    Docker支持AUFS(默认)、Btrfs、Devicemapper、OverlayFS、ZFS五种存储驱动。

    六、Libcontainer - runtime管理工具

    Docker所有对容器生命周期进行管理的操作都是通过调用Libcontainer的API来实现的。

    所以,Libcontainer本质是一种 runtime 管理工具,只对容器运行时的相关状态和操作进行管理的工具。

    Libcontainer的API主要包括:

    运行容器、暂停/恢复容器、销毁容器、向容器发送信号、获取容器信息(ID、进程、状态、配置等)、修改容器配置、Checkpoint/Restore 容器。

    相关工具:runC,是基于 Libcontainer 的隶属于 OCI 开源组织的一个 容器runtime管理工具。

    参考资料

    Docker1 架构原理及简单使用

    理解Docker(1):Docker 安装和基础用法

    Docker 核心技术与实现原理

    Docker原理及使用

    深入解析Docker 架构原理

  • 相关阅读:
    LeetCode:删除有序数组中的重复项
    ABAP新语法之内联声明
    SAL实战练习-全选及按钮事件等
    固定资产创建BAPI_FIXEDASSET_CREATE--含扩展结构字段EXTENSIONIN
    SAP-采购订单-数据输入校验
    外围系统传SAP---OUT2SAP接口测试
    SAP2OUT异步接口测试
    SAP2OUT同步接口测试
    SAP-批量创建货源清单
    BDC-用户锁定及有效期设置程序
  • 原文地址:https://www.cnblogs.com/wangwangfei/p/13332759.html
Copyright © 2020-2023  润新知