容器技术
在计算机世界中,容器与管理程序虚拟化有所不同,管理程序虚拟化通过中间层将一台或多台独立的机器虚拟运行于物理硬件之上,而容器则是直接运行在操作系统内核之上的用户空间。因此,容器虚拟化也被称为"操作系统虚拟化"。
和传统的虚拟化及半虚拟化相比,容器运行不需要模拟层和管理层,而是使用操作系统的系统调用接口。这降低了运行单个容器所需的开销。
Docker 介绍
Docker 可以将应用打包成一个标准格式的镜像,并且以容器的方式运行。它将一系列软件包装在一个完整的文件系统中,这个文件系统包含应用程序运行所需的一切:代码,运行时工具,系统工具,系统依赖。
Docker的目标就是提供下列这些东西:
- 提供一个简单,轻量的建模方式
- 职责的逻辑分离
- 快速,高效的开发生命周期
- 鼓励面向服务的架构
Docker 推荐单个容器只运行一个引用程序或进程,这样就形成了一个分布式的应用程序模型,在这种模型下,应用程序或服务都可以表示位一系列内部互联的容器,从而使分布式部署应用程序,扩展或调试应用程序都变得非常简单。
Dokcer 核心组件
-
Docker客户端和服务器,也称为Docker引擎
Docker.png
Docker是一个客户端/服务器架构的程序,Docker客户端只需要向Docker服务器或守护进程发出请求,服务器或守护进程将完成所有工作并返回结果。
-
Docker 镜像
镜像是构建Docker的基石,用户基于镜像来运行自己的容器。镜像是基于联合文件系统一种层式结构,由一系列指令一步一步构建出来。 -
Registry
Docker 用 Registry 来保存用户构建的镜像,Registry 分为公共和私有两种,Docker公司运营的公共 Registry 叫作 Docker Hub,用户也可以自己架设自己私有 Registry。 -
Dokcer容器
用户只需要把自己的应用程序或服务打包放进容器即可。容器是基于镜像启动起来,容器中可以运行一个或多个进程。我们可以认为:镜像是Docker生命周期中构建或打包阶段,而容器则是启动或执行阶段。
总结起来,Docker容器就是:- 一个镜像格式
- 一系列标准的操作
- 一个执行环境
能用Docker做什么
Dokcer的一些应用场景:
-
加速本地开发和构建流程,使其更加高效,更加轻量化。本地开发人员可以构建,运行并分享Docker容器,容器可以在开发环境中构建,然后轻松地提交到测试环境中,并最终进入生产环境。
-
能够让独立服务或应用程序在不同的环境中,得到相同的运行结果。
-
用Docker创建隔离的环境来进行测试。
-
Dokcer可以让开发者先在本机上构建一个复杂的程序或架构来进行测试,而不是一开始就在生产环境部署,测试。
-
高性能,超大规模的宿主机部署
Docker 的技术组件
Dokcer可以运行于任何安装了现代Linux内核的x64的主机上,推荐内核版本是3.8或更高。
-
一个原生的Linux容器格式
Docker中称之为libcontainer -
Linux 内核的命名空间
用于隔离文件系统,进程和网络 -
文件系统隔离
每个容器都有自己的root文件系统 -
进程隔离
每个进程都运行在自己的进程环境中 -
网络隔离
容器间的虚拟网络接口和IP地址都是分开的 -
资源隔离和分组
-
写时复制
-
日志
容器产生的STDOUT,STDERR 和 STDIN 这些IO流都会被收集并记入日志。 -
交互式shell
用户可以创建一个伪tty终端,将其连接到STDIN,为容器提供一个交互式shell。
网友评论