Docker容器技术

Docker容器技术

一、Docker 容器的基础知识

1.1.1 Docker 容器介绍

  1. 什么是容器?

容器是一种基础工具。泛指任何可以用于容纳其它物品的工具、可以部分或完全封闭,被用于容纳、存放、运输物品。物体可以被存放在容器中、而容器则可以保护容器内部的物品(存东西和隔离)。
容器的类型:锅 ,碗 ,瓶,罐,桶等。

  1. 主机虚拟化与容器的区别

虚拟化就是通过模拟计算机的硬件,来实现在同一台计算机上同时运行不同的操作系统的技术常用的vmwore、openstack、kvm都是使用的虚拟化技术。
容器就是在隔离环境运行的一个进程,如果进程停止,容器就会销毁。隔离的环境拥有自己的系统文件,IP地址,主机名等。
他们的区别:
虚拟话:需要硬件支持,需要模拟硬件,可以运行不同的操作系统,启动需要走开机启动流程(分钟级)。
容器技术:
共用宿主机内核,第一个进程直接启动服务(nginx,mysql等),开机秒级,轻量,损耗少。

  1. NameSpace命名空间(资源隔离)
名称 说明 作用
PID 进程隔离 进程编号隔离
NET 网络管理接口 网络空间隔离
IPC 管理跨进程通信的访问 进程间通信隔离
Mount 挂载点管理 文件系统隔离
UTS 主机名域名 隔离内核和版本标识
USER 用户和用户组 用户空间隔离
  1. LXC到Docker的历史

LXC,将原来需要手工编码实现的容器技术,进行了封装。实现了,更加方便、快速的容器创建及管理的技术。通过固有“模板”,安装并启动容器。将远程的程序包下载到本地,安装并创建好我们需要的容器。
确实,LXC已经很大程度上降低了容器管理的难度,但是依然使用一些弊端。有些时候可能需要自定制模板,以及使用LXC中自带的模板,以及大规模创建及复制依然比较麻烦。所以,很难大规模的应用。所以,出现了Docker技术。Docker是在LXC基础上,使用GoLang二次开发的封装版。

  1. Docker的发展历史

Docker 公司位于旧金山,由法裔美籍开发者和企业家 Solumon Hykes 和几个年轻的小伙在2010年创立的,有意思的是,Docker 公司起初是一家名为 dotCloud 的平台即服务(Platform-as-a-Service, PaaS)提供商。
底层技术上,dotCloud 平台利用了 Linux 容器技术。为了方便创建和管理这些容器,dotCloud 开发了一套内部工具,之后被命名为“Docker”。Docker就是这样诞生的!
2013年,dotCloud 的 PaaS 业务并不景气,公司需要寻求新的突破。于是他们聘请了 Ben Golub 作为新的 CEO,将公司重命名为“Docker”,放弃dotCloud PaaS 平台,怀揣着“将 Docker 和容器技术推向全世界”的使命,
开启了一段新的征程。
如今 Docker 公司被普遍认为是一家创新型科技公司,据说其市场价值约为 10 亿美元。Docker 公司已经通过多轮融资,吸纳了来自硅谷的几家风投公司的累计超过 2.4 亿美元的投资。
几乎所有的融资都发生在公司更名为“Docker”之后。

  1. 什么Docker

1、Docker 是基于容器技术的轻量级虚拟化解决方案。
2、Docker是容器引擎,把Linux的cgroup,namespace等容器技术进行封装抽象为用户提供了创建和管理容器的便捷界面(包括命令和API Docker 利用 Linux 核心中的资源分离机制,例如 cgroups,以及 Linux namespace,来创建独立的容器。)。
3、Docker 是一个开源项目,诞生于2013年初,基于Google公司推出的GO语言实现的。
4、微软,红帽Linux,IBM,Oracle等主流的IT厂商已经在自己的产品里增加了对Docker容器技术的支持
5、相比其他早早期的容器技术,Docker引进了一套容器管理的生态系统,包括分层的镜像模型,容器注册库,友好的REST API.

  1. 容器技术和虚拟化技术的对比
资源 容器技术 虚拟化技术
占用磁盘 小,甚至几十KB(镜像层的情况) 非常大,上GB
启动速度 快,秒级别 慢,需要几分钟
运行心态 自己运行在宿主机的内核上,不同容器共享一个Linux内核 运行在Hypervisior上
并发性 一台属主机可以启动成千上百个容器 最多几十个虚拟机
性能 接近宿主机本地进程 逊于宿主机
资源利用率
原文地址:https://www.cnblogs.com/woaiyunwei/p/12990589.html