美文网首页
docker 基础架构

docker 基础架构

作者: lzp1234 | 来源:发表于2019-08-15 16:54 被阅读0次

    前言

    本文介绍docker的基础架构。

    环境

    操作系统:centos7
    docker版本:docker-ce: 18.09

    正文

    简介

    docker是典型的 c/s 架构。

    通过docker-ce安装的docker,会默认安装两个组件(通过 docker version 命令可以查看):

    1. docker client:这里安装的是cli,提供命令行功能。
    2. docker server:docker具体功能的实现者。也称之为 docker engine、docker daemon。

    docker server 就如一个常见的web server,对外提供restful api。
    docker client 可以有多种形式,比如sdk、cli。cli为用户提供命令行方式,sdk为程序提供包形式。

    docker的架构里还包含一个组件:docker registry。用于存储容器的镜像。

    docker基础架构
    docker 实现原理

    主要依赖:Namespaces、Control groups、UnionFS

    Namespaces:

    命名空间,主要起隔离作用。
    其中包含:
    pid namespace:进程隔离
    net namespace:网络管理
    ipc namespace:IPC(进程间通信)资源管理
    mnt namespace:文件系统挂载管理
    uts namespace:内核和版本标识符隔离。

    Control groups:

    控制组:限制容器对物理资源的使用,比如cpu、内存。
    依赖技术:cgroups。

    UnionFS:

    联合文件系统:为容器提供块功能,也就是文件系统。
    也可使用其它类似UnionFS的软件:例如 AUFS, btrfs, vfs, DeviceMapper

    Container format

    容器格式:这是一个逻辑概念。
    表示,将 Namespaces、Control groups、UnionFS 组合起来形成的一种容器。目前的组合方式称之为 libcontainer,这也是当前唯一提供的方式。
    引入该概念,因为以后可能会出现其它形式的容器。

    docker 创建一个容器的主要步骤
    1. 拉取镜像
    2. 创建一个容器(此时只是创建,还未启动)
    3. 为容器分配文件系统
    4. 为容器创建网络
    5. 启动容器。

    注意,当docker run 携带命令,则会覆盖掉镜像中的CMD。如下:

    docker run -i -t ubuntu /bin/bash
    

    此时无论ubuntu镜像的CMD是什么都不会执行,而会去执行 /bin/bash。

    容器的生命周期
    image.png

    这张图已经十分详细,不再赘述。若看不懂,也仅仅是因为不熟悉docker的使用。

    扩展

    无。

    参考

    https://docs.docker.com/engine/docker-overview/#docker-architecture

    相关文章

      网友评论

          本文标题:docker 基础架构

          本文链接:https://www.haomeiwen.com/subject/tyizjctx.html