美文网首页
Docker核心实现技术

Docker核心实现技术

作者: 云师兄 | 来源:发表于2018-06-07 14:06 被阅读16次

从操作系统功能上看,Docker底层依赖的核心技术主要包括linux操作系统的命名空间,控制组,联合文件系统和linux网络虚拟化支持。

基本架构

  • 服务端
    Docker目前采用标准的C/S架构,Docker Daemon一般在宿主主机上运行,作为服务端接受来自客户端的请求,并处理请求。
  • 客户端
    Docker客户端为用户提供一系列可执行命令,与服务端交互。

命名空间

命名空间是linux内核的一个强大特性,每个容器拥有自己单独的命名空间,运行在容器的应用像是在独立的操作系统中一样,保证了容器之间互不影响。

  • 进程命名空间
    有了pid命名空间,每个命名空间中的进程就会相互隔离。
  • 网络命名空间
    通过网络命名空间,可以实现网络隔离,将不同容器的网络隔离开来。
  • IPC命名空间
  • 挂载命名空间
    -UTS命名空间
  • 用户命名空间

控制组

控制组是linux内核的一个特性,主要用来对共享资源进行隔离,限制,审计等。通过控制分配到具体容器的资源 ,来避免多个容器同时运行时对宿主主机系统的资源竞争。

联合文件系统

联合文件系统支持将文件系统中的修改信息作为一次提交,并层层叠加,是Docker镜像的实现基础。可以通过docker history来查看一个镜像由哪些层组成。
执行docker history hub.c.163.com/public/ubuntu:16.04-tools后输出如下:

[vagrant@localhost ~]$ docker history hub.c.163.com/public/ubuntu:16.04-tools
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
1196ea15dad6        14 months ago       /bin/sh -c #(nop)  CMD ["/usr/bin/supervisor…   0B
<missing>           14 months ago       /bin/sh -c #(nop) COPY file:32c4496c7e250e69…   70B
<missing>           14 months ago       /bin/sh -c #(nop)  EXPOSE 22/tcp                0B
<missing>           14 months ago       /bin/sh -c cp -f /usr/share/zoneinfo/Asia/Sh…   414B
<missing>           14 months ago       /bin/sh -c sed -i s/"PermitRootLogin without…   2.53kB
<missing>           14 months ago       /bin/sh -c apt-get update     && apt-get upd…   112MB
<missing>           15 months ago       /bin/sh -c mkdir -p /var/run/sshd               0B
<missing>           15 months ago       /bin/sh -c #(nop)  MAINTAINER netease "ops"     0B
<missing>           2 years ago         /bin/sh -c #(nop) CMD ["/usr/sbin/sshd" "-D"]   0B
<missing>           2 years ago         /bin/sh -c #(nop) EXPOSE 22/tcp                 0B
<missing>           2 years ago         /bin/sh -c sed -ri 's/^#PasswordAuthenticati…   2.54kB
<missing>           2 years ago         /bin/sh -c mkdir /var/run/sshd                  0B
<missing>           2 years ago         /bin/sh -c apt-get install -y openssh-server…   83.5MB
<missing>           2 years ago         /bin/sh -c apt-get update                       22.4MB
<missing>           2 years ago         /bin/sh -c #(nop) CMD ["/bin/bash"]             0B
<missing>           2 years ago         /bin/sh -c sed -i 's/^#\s*\(deb.*universe\)$…   1.9kB
<missing>           2 years ago         /bin/sh -c echo '#!/bin/sh' > /usr/sbin/poli…   701B
<missing>           2 years ago         /bin/sh -c #(nop) ADD file:9ade4e2863c54c630…   118MB

这些层都是只读,不可修改的 。当docker利用镜像启动一个容器的时候,在文件系统的顶层再挂载一个新的可读写的层给容器,进行更新操作。

相关文章

  • D神公众号学习笔记

    Docker的核心技术和实现原理: Docker核心技术支撑: Namespace:(实现了进程和网络资源的隔离)...

  • docker进阶必读

    引用段落Docker 核心技术与实现原理深入解析Docker 架构原理

  • Docker核心实现技术

    从操作系统功能上看,Docker底层依赖的核心技术主要包括linux操作系统的命名空间,控制组,联合文件系统和li...

  • Docker核心实现技术

    cgroups cgroups是Linux内核的一个特性,主要用来对共享资源进行隔离、限制、审计等。只有能控制分配...

  • Docker 核心技术与实现原理

    Docker 核心技术与实现原理 标签(空格分隔): Docker 个人博客:www.i4t.com [toc] ...

  • docker生态容器

    Docker容器生态 Docker生态:容器核心技术、平台技术、支持技术 容器核心技术:指的是container在...

  • Docker 底层实现

    底层实现 Docker 底层的核心技术包括 Linux 上的命名空间(Namespaces)、控制组(Contro...

  • docker 零碎

    docker 虚拟化技术 docker 是一种虚拟化技术,基于 lxc 技术实现。 docker 容器操作 doc...

  • Docker相关概念

    Docker核心技术 容器镜像 docker架构 docker compose容器部署 docker常用命令帮助命...

  • Kubernetes(K8s)初探

    Docker技术 Docker本身并不是容器,它是创建容器的工具,是应用容器引擎。 Docker技术的三大核心概念...

网友评论

      本文标题:Docker核心实现技术

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