博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
docker组件介绍
阅读量:5914 次
发布时间:2019-06-19

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

一、Docker Client and Daemon(docker egine docker 引擎)

docker是一个客户端工具,作用是发送 用户的请求给 dockerd

安装路径: /usr/bin/docker dockerd 也叫 docker daemon

安装路径: /usr/bin/dockerd

一句话概括: docker和dockerd 组成了docker engine

二 、Containerd(容器)

管理容器的生命周期(从创建容器到销毁容器) 拉取/推送容器镜像 存储管理(管理镜像及容器数据的存储) 调用 runC 运行容器(与 runC 等容器运行时

一句话概括:

docker对容器的管理和操作基本 都是通过 containerd 来完成的

2.1、 Containerd 的背景

      1. Docker项目日趋庞大,架构上需要 进行拆分(开源项目的思路)

      2. 可以被Kubernetes CRI 等项目使用 (通用化)

      3. 为广泛的行业合作打下基础

一句话概括:

containerd 提供核心容器服务的接口 标准,上层的容器化应用平台将直接使 用 containerd 提供的接口。

2.2、 Containerd技术发展方向

    

      1. 简洁的接口设计: 基于 gRPC 的 API 和 client library

      2. 完整的 OCI 支持: runtime 和 image spec

      3. 良好的容器核心功能: 健壮、稳定、高效、可移植

      4. 松耦合:使 image、filesystem、runtime 解耦,实现插件式的扩展和重用

      5. https://github.com/containerd/containerd

三 、Containerd-shim

它是 containerd 的组件,是容器的运 行时载体,我们在 docker 宿主机上看 到的 shim 也正是代表着一个个通过调 用 containerd 启动的 docker 容器。

安装路径: /usr/bin/docker-containerd-shim

四、 RunC

  1. RunC 是一个轻量级的工具,它是用来运行容器的,且只做这一件事。

  2. 通过runc,可以不用通过 docker 引擎直接运行容器。

  3. runC 是标准化的产物,它根据 OCI 标准来创建和运行容器。而 OCI(Open Container Initiative)组织,旨在围绕容器格式和运行时制定一个开放的工业化标准。

  4. RunC 作为标准化容器运行时的一个实现,已被 docker 内置为默认的容器运行时.

  5. https://github.com/opencontainers/runc mkdir ~/mycontainer cd ~/mycontainer mkdir rootfs docker export $(docker create busybox) | tar -C rootfs -xvf – runc spec

  docker-runc create mycontainerid

  docker-runc start mycontainerid

  docker-runc states mycontainerid

  docker-runc kill mycontainerid 9

  docker-runc delete mycontainerid

五、 容器运行过程分析

  1.Docker客户端向 dockerd发起请求

  2.Dockerd从 Docker Hub上拉取镜像

  3.Dockerd使用镜像运行了一个容器并产 生了输出

  4.docker-containerd …….

  5.Dockerd把输出的内容返回给了 docker 客户端

  # ps afx | grep docker -A 1

六、 为什么没有 docker-runc

 还是因为 docker-containerd-shim

  1. 允许容器运行时(即 runC)在启动容器之后退出,简单说就是不必为每个容器一直运行 一个容器运行时(runC)

   2. 即使在 containerd 和 dockerd 都挂掉的情况下,容器的标准 IO 和其它的文件描述 符也都是可用的

  3. 向 containerd 报告容器的退出状态

 

 

 

通过tcp方式访问dockerd(不建议)

 ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

测试: # docker -H tcp://127.0.0.1:2375 info

转载于:https://www.cnblogs.com/Robi-9662/p/10467117.html

你可能感兴趣的文章
android activity之间传递对象
查看>>
最全Handler源码解剖
查看>>
史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
查看>>
大流量、高负载场景 Nginx+Linux 性能调优
查看>>
华为发布全球首款Android 3.2平板电脑
查看>>
java对象拷贝
查看>>
LAMP_配置静态文件缓存
查看>>
Java 的基本数据类型
查看>>
网站页面性能优化的34条黄金守则(网上到处都有了,还是要转一下)
查看>>
无法在模块路径中找到主题引擎:“murrine”
查看>>
[转]jetbrains系产品字体设置技巧
查看>>
selenium3打不开火狐浏览器的解决方法
查看>>
C#forUnity快速入门(连载13)-C#结构体
查看>>
我的友情链接
查看>>
Ubuntu添加永久DNS配置
查看>>
hash 散列生成目录
查看>>
开通博客的第一天
查看>>
密码权限管理
查看>>
Hive(一):Hive的安装部署
查看>>
Tomcat9 多端口 多项目
查看>>