openshift

docker机制概述

2018-10-26  本文已影响22人  wangxiaoxi

docker机制

docker是容器化的一种实现,可用来部署。

docker hub提供了很多社区开发的容器。

docker用了一种叫做client-server的机制。

client:

命令行工具docker用于和docker server基于RESTful API来执行操作

server:

docker在一个操作系统上作为一个进程,构建build, 运行和下载容器镜像。这个进程可以和docker client运行在同一个操作系统上,可以运行在远端。

Docker核心元素

images:

镜像是一个只读模版,包含了一个实时运行环境所需的所有的库和应用程序本身。镜像可以用来创建容器。镜像可以创建,更新和下载用于实时的使用。

registries

仓库存储共有和私由的images. 比较知名的公开的registries是docker hub.它存储了许多由社区开发的镜像。但是私有的registries可以被创建,提供给内部镜像的开发。

containers

containers是在共有host OS上应用程序之间相互隔离的用户环境。

container 和Linux kernel

container是Docker创建的,从docker image中,隔离于其他linux内核的一些标准功能。

这些标准功能包括:

命令空间

内核可以将对特定进程可见的特定系统资源分配到一个命名空间。在这个命令空间,只有在这个命令空间的进程可以看到这些资源。可被分配到命名空间的资源由网络接口,进程ID列表,挂载点,IPC资源和这个系统自己的hostname信息。例如,在不同命名空间的2个进程拥有不同的根文件系统。每个容器都被加到一个特定组的命名空间,这个命名空间为container独有。

cgroups

control groups将进程和他们的子进程进行分组,以便于去管理和限制其所消耗的资源。

cgroup对属于特定容器用的系统和资源进行限制。这就使容器不会耗费container host的资源。

SELinux

SELinux是一个强制访问控制系统,用于将container与其他container, container和container hosts进行保护。 Container以一个限制的SELinux type来运行,其对系统资源只有非常有限的访问权限。每个container的进程被放在一个唯一的种类将彼此隔离。

Docker Container Images

每一个docker image包含了许多层,这些层叠加起来,让容器化的程序看起来就是一个独立的虚拟的文件系统。docker images是不可改变的。只有层之间的叠加而不存在下一层之间改变上一层。

创建image的两种方式

1. 用一个正在运行的container.

一个不变的image启动一个container instance, 任何的简化和更新都会产生一个新的层。Docker 命令‘docker commit’可以存储这个新的层生成新的image。这是生成image最方便的方法。但是我们并不推荐这么做,因为这样生成的image会因为存在临时文件或日志文件等不需要的文件是变的很大。

2. Dockerfile

Container images 可以从一个base image经过Dockerfile中的一些步骤进行编译。每一步都创建了一个新的层直到最后的container image. 这是我们推荐的build image的方法。因为它非常清楚了记录了那些层有那些文件。

上一篇 下一篇

猜你喜欢

热点阅读