博客
关于我
docker进程分析
阅读量:80 次
发布时间:2019-02-26

本文共 1510 字,大约阅读时间需要 5 分钟。

Docker 进程分析

很久没写技术文章,所以今天分析一下 Docker 相关的进程。

容器相关的进程

安装容器的时候,一句话就够了,yum -y install docker-ce,前提是配置好 Docker 的 yum 源。不过有时候配置好了源,总是会发现 timeout,呵呵哒!尝试下阿里云的 yum 源。

Docker 组件解析

安装完成后,就会发现如上的文件,除去了相关的帮助文档。在其中可以看到,分为各种各样的二进制程序:

  • docker:表示为 Docker 的客户端,一个命令行程序的使用。
  • dockerd:主要是服务端程序,在默认的情况下,客户端发送的请求都是由 dockerd 接收,而 dockerd 则是一个 RESTful 的 API 接口。
  • docker-containerd:可以看出来包括三部分:
    • 客户端名称为 ctr,一个是 containerd 用来提供 gRPC 的接口,主要用来进行容器的管理、镜像的管理、存储和网络的管理。
    • containerd-shim:主要是用来运行容器的进程。
  • docker-runc:容器的运行时,用于创建、启动、停止、删除操作。
  • docker-proxy:主要是来实现网络转发功能。
  • docker-init:初始化网络,生成相关的文件。

Docker 服务启动

启动 Docker 服务如下:

启动完成之后,就看到生成文件,运行时文件,并且生成了一个桥接的网络接口。

容器的根目录

容器的根目录主要用来存放一些镜像、网络配置、编译 image 的缓存、运行时环境、挂载的卷等元数据信息。

容器进程信息

在没有启动容器的时候,进程信息如下所示:

运行一个容器之后,进程信息如下所示:

进程与线程

从进程的 id 可以看出来,dockerd 生成了 docker-containerd,docker-containerd 生成了 docker-containerd-shim,那么 docker-runc 去哪里了?

docker-runc 的作用

  • docker-runc 是容器的运行时,专门用来做容器的创建、启动、停止、删除操作。当每次执行完毕之后,就会退出。

  • docker-containerd-shim 主要是负责容器的运行,并且用来向 docker-containerd 汇报容器的状态,从而容器的状态数据不用存放在内存中,而每个容器都会使用一个 docker-containerd-shim 的进程来进行管理。

  • docker-containerd 主要是用来负责容器生命周期的管理、镜像、存储、网络的管理,这个开放了一个 gRPC 的接口,从而可以适配很多平台,上层可以直接调用,而 dockerd 则是一个具体的实现,其他还有 lxd 等。

  • dockerd 主要是服务端程序,提供了 RESTful 接口,可以使用 curl 直接访问。

  • Docker 远程访问

    支持远程访问的时候,需要修改启动参数:

    查看运行时环境:

    为什么要使用 docker-containerd-shim,主要是为了防止 dockerd 和 containerd 挂掉,也是为了热迁移做准备,如下杀掉 containerd 之后,依旧能访问容器的服务。

    无法连接 Docker 主机(也有可能是 Docker 服务未启动):

    闲扯

    当分析完这个进程之后,陷入了深深的沉思。。。分析这些进程有个毛的用。。。

    从标准化的指定上来说,无论 runc 的标准话还是 image 的标准化,总体的目标是弱依赖,只要提供相应的接口就可以提供服务,只要符合标准,那么就是可以运行的。

    转载地址:http://igyk.baihongyu.com/

    你可能感兴趣的文章
    OpenPPL PPQ量化(5):执行引擎 源码剖析
    查看>>
    Openresty框架入门详解
    查看>>
    openshift搭建Istio企业级实战
    查看>>
    Openstack企业级云计算实战第二、三期培训即将开始
    查看>>
    ORACEL学习--理解over()函数
    查看>>
    oracle script
    查看>>
    Oracle 递归
    查看>>
    oracle--用户,权限,角色的管理
    查看>>
    Oracle10g EM乱码之快速解决
    查看>>
    Oracle11G基本操作
    查看>>
    Oracle11g服务详细介绍及哪些服务是必须开启的?
    查看>>
    Oracle11g静默安装dbca,netca报错处理--直接跟换操作系统
    查看>>
    oracle12安装软件后安装数据库,然后需要自己配置监听
    查看>>
    Oracle——08PL/SQL简介,基本程序结构和语句
    查看>>
    Oracle——distinct的用法
    查看>>
    oracle下的OVER(PARTITION BY)函数介绍
    查看>>
    Oracle中DATE数据相减问题
    查看>>
    Oracle中merge into的使用
    查看>>
    oracle中sql查询上月、本月、上周、本周、昨天、今天的数据!
    查看>>
    oracle中sql的case语句运用--根据不同条件去排序!
    查看>>