一、概述

Docker是一种容器技术,容器技术历史如下:

这里写图片描述
容器技术可以完美地将应用的各种组件封装起来,一次开发,一次封装,多次部署,随时迁移。从而不需要关注底层架构。

二、Docker中常用的技术

1、namespace技术

namespace技术是为了对容器进行网络、通信、文件、权限等对象的隔离。namespace包含了6项隔离:

这里写图片描述

2、Cgroups

这里写图片描述
cgroups可以对容器所占用的系统资源进行限制。

3、其它技术

这里写图片描述

  • selinux和apparmor可以增强对容器的访问控制。
  • capabilities主要实现在于将超级用户root的权限分割成了各种不同的capabilities权限,从而更严格上的控制容器的权限。
  • netlink技术可以完成docker容器的网络环境配置和创建。

4、容器管理

这里写图片描述

  • lxc是第一个完整意义上的容器管理技术,通过lxc可以方便地启动、创建、停止一个容器,还可以通过它来操作容器中的应用,也可以查看容器的运行状态等等。

  • libcontainer是docker开发的原生的lxc。

5、Docker技术原理

这里写图片描述
~~~~~~~~~~~~~~~我是萌萌哒的分隔符 ~~~~~~~~~~~~~~~~
这里写图片描述
docker三个重要组件:

  • execdirver:存储了容器定义的配置信息,libcontainer拿到这些信息后调用底层的namespace等技术来完成容器的创建和管理。

  • networkdirver:完成docker容器的网络环境的配置,如IP地址、端口、防火墙策略等。

  • graphdirver:主要负责对容器镜像的管理。

三、Docker核心技术

1、虚拟机和Docker对比

如图所示:

这里写图片描述

容器的运行是不需要额外安装操作系统的,容器是更加轻量化的技术。
接下来看看详细的对比信息:

这里写图片描述

2、容器、镜像、仓库

容器是承载相关应用的载体;镜像可以由安装了特定应用的容器打包而来,这样可以方便地进行二次下载与运行;仓库是存储镜像的地方。

docker容器由三种状态:

  • Running Stopped Paused

这里写图片描述

docker镜像是一种层级状的结构,如下图所示:

这里写图片描述

由此可见,有两种创建镜像的方式。

Docker仓库

这里写图片描述

dockerhub是docker的官方镜像仓库,存放了各种标准的镜像,我们可以使用pull命令下载镜像。还可以定制私有仓库。

3、build、ship、run

这里写图片描述

build onece,run everywhere.

4、docker数据卷

这里写图片描述
当我们的容器崩溃后重启时,依然可以访问到之前的数据,也可以方便解决主机和容器间的数据访问。

5、docker网络

docker网络有四种模式:bridged、host、container、none。

  • bridged:表示容器可以与主机、主机上的容器、外部通信。
  • host:只能与主机通信
  • container:只能与主机上的容器通信
  • none:无网络
    最常用的是bridge模式。

四、Docker平台架构

Docker平台架构:

这里写图片描述

Docker平台技术体系(常用工具):

这里写图片描述

五、Docker平台对比

1、Mesos+Marathon+Zookeeper

2、Kubernetes

3、Swarm

这里写图片描述

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐