文章目录

  • 什么是docker
  • 原理
  • docker结构
  • 镜像
  • 容器
  • 仓库
  • docker的特点
  • 轻量
  • 开放性
  • 安全性


什么是docker

docker是一个开源的应用容器引擎,开发者可以打包自己的应用到容器里面,然后迁移到其他机器的docker应用中,可以实现快速部署。如果出现的故障,可以通过镜像,快速恢复服务。

原理

docker是利用Linux内核虚拟机化技术(LXC),提供轻量级的虚拟化,以便隔离进程和资源。LXC不是硬件的虚拟化,而是Linux内核的级别的虚拟机化,相对于传统的虚拟机,节省了很多硬件资源。(源代码托管在 Github 上, 基于go语言并遵从Apache2.0协议开源。)

docker设想是交付运行环境如同海运,OS如同一个货轮,每一个在OS基础上的软件都如同一个集装箱,用户可以通过标准化手段自由组装运行环境,同时集装箱的内容可以由用户自定义,也可以由专业人员制造。这样,交付一个软件,就是一系列标准化组件的集合的交付,如同乐高积木,用户只需要选择合适的积木组合,并且在最顶端署上自己的名字(最后一个标准化组件是用户的app)。这也就是基于docker的PaaS产品的原型。

docker结构

镜像

docker镜像就是一个只读模板,比如,一个镜像可以包含一个完整的centos,里面仅安装apache或用户的其他应用,镜像可以用来创建docker容器,另外docker提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用

容器

docker利用容器来运行应用,容器是从镜像创建的运行实例,它可以被启动,开始、停止、删除、每个容器都是互相隔离的,保证安全的平台,可以把容器看做是要给简易版的linux环境(包括root用户权限、镜像空间、用户空间和网络空间等)和运行其中的应用程序

仓库

仓库集中存储镜像文件,registry是仓库主从服务器,实际上参考注册服务器上存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的tag

仓库分为两种,公有仓库,和私有仓库,最大的公有仓库是docker Hub,存放了数量庞大的镜像供用户下周,国内的docker pool,这里仓库的概念与Git类似,registry可以理解为github这样的托管服务

docker的特点

轻量

运行在单一机器上的容器共享相同的操作系统内核,所以他们能立即启动,并且更有效率的使用RAM,而只需占用很少的计算和内存资源。图片是由分层文件系统构建的,所以他们能够共享公用文件,使磁盘使用和图片下载更有效率。

开放性

Docker容器基于开源的标准,这使得容器能够运行在一些主流的Linux发行版上和Microsoft Windows 以及包括 VM、裸机服务器和云在内的任何基础服务设施上运行

安全性

容器隔离每一个应用和底层的基础设施,并且为应用提供一个保护层。因此应用出现问题,也只是单个容器的问题,而不会波及到整台机器。