Docker
Docker的前身是LXC Linux Container,拥有自己独立的空间、进程和网络,可以在一台主机部署多个Service Container,将操作系统的资源虚拟化。
Docker实现了对应用的封装、部署、运行的生命周期管理,只要在glibc的环境下,都可以运行。
Docker和LXC是什么关系?
Docker集成自LXC,并在其基础上扩展了更强大的功能。
什么是Docker?
Docke是一款开源应用容器引擎,基于Go语言开发。
Docker可以让开发者打包一个应用和它的依赖到一个轻量级、可移植的容器中,然后发布到任何流行的Linux服务器中,也可以实现虚拟化。
Docker完全使用沙箱机制,相互之间没有接口且开销率极低。
Docker的特点:
- 灵活:即使是最复杂的应用也可以集装箱化。
- 轻量级:容器利用并共享主机9内核。
- 可互换:您可以即时部署更新和升级。
- 便携式:您可以在本地构建,部署到云,并在任何地方运行。
- 可扩展:您可以增加并自动分发容器副本。
- 可堆叠:您可以垂直和即时堆叠服务。
镜像(image)
docker镜像就是一个只读模板,比如一个镜像可以包含一个完整的centos,里面仅安装apache和用户的其他应用,镜像可以用来创建docker容器,另外docker提供了一个很简单的机制来创建镜像和更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。
容器(container)
docker通过容器来运行应用,容器是镜像创建的运行实例,它可以被启动,开始、停止、删除、每个容器都是互相隔离的,保证平台的安全,可以把容器看做是个简易版的linux环境(包括root用户权限、镜像空间、用户空间和网络空间等)和运行在其中的应用。
仓库(repository)
通过镜像启动一个容器,一个镜像是一个可执行的包,其中包含应用的代码、运行时间、库、环境变量和配置文件。
容器是镜像的运行实例,当运行时可以用命令查看运行状态和进程。
容器在本机上运行,并与其他容器共用一个内核,有一个独立运行的进程,不与其他应用抢占内存,非常轻量。
Docker与OpenStack比较
类别 | Docker | OpenStack |
部署难度 | 非常简单 | 组件多,部署复杂 |
启动速度 | 秒级 | 分钟级 |
执行性能 | 和物理系统几乎一致 | VM会占用一些资源 |
镜像体积 | 镜像MB级别 | 虚拟机镜像GB级别 |
管理效率 | 关键简单 | 组件相互依赖,管理复杂 |
隔离性 | 隔离性高 | 彻底隔离 |
可管理性 | 单进程 | 完整的管理进程 |
网络连接 | 比较弱 | 借助neutron可以灵活管理各组件的网络 |
对各岗位的优势
面向产品:产品交付
面向开发:简化环境配置
面向测试:多版本测试
面向运维:环境一致性
面向架构:自动化扩容(微服务)
应用不用担心运行环境的问题,所有服务器都是自动分配容器,自动部署,自动运行,自动扩容。
理论上只要服务器配置足够,就不用担心,磁盘,CPU和内存问题。
自动迁移、可以制作镜像,随时都可以恢复。