
最近这几年来docker容器技术大火,是大多数互联网公司追捧的前沿技术对象,大家都在尝试使用它来替换vmware虚拟机来运行他们的程序,既然docker容器技术都这么火了,那老jay也怎么可能会放过这好的学习机会。其实老jay研究docker技术已经有一年多了,也积累了不少关于使用docker方面的经验。从今天开始老jay会分享一些关于docker容器方面的技术,也会陪着小伙伴们一起学习前沿技术,让大家一起共同进步。

我们看到传统模式它没有集装箱来装这些货物,而货物是散乱的,只能一件一件来运输,来回运输效率非常低下。而容器模式就好比集装箱,将所有的货物集中放在箱子里面一次性能进行运输,省去了来回重复的工作,提高了货物运输的效率。而docker容器的再现,是改变传统软件生产和软件交付的方式,必将对IT产业的变革产生深远的影响。




从这张图我们可以观察到docker发展飞快,不仅是他的市值增长很快,版本迭代更新得也很快。


Docker镜像:用于创建 Docker 容器的模板。
Docker容器:容器是独立运行的一个或一组应用。
Docker客户端: Docker 客户端通过命令行或者其他工具使用 Docker API 与 Docker 的守护进程通信。
Docker主机:一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。
Docker仓库: Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。
DockerMachine :一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。
Docker三大核心组件:容器、镜像、仓库



Namespaces:LXC所实现隔离性,主要来自kernel的namespace,其中pid,net,ipc,mnt,uts等Namespace将容器的进程,网络,消息,文件系统和hostname隔离开
Cgroups :实现了对资源的配额和度量
UnionFS:一种支持将不同目录挂载到同一个虚拟文件系统下的文件系统
LXC: Linux Container,提供一种操作系统级的虚拟化方法,借助于namespace的隔离机制和Cgroup限额功能来管理container.



Docker作为一种轻量级的虚拟化容器技术,Docker运行应用上跟传统虚拟机方式相比具有显著优势:
Docker容器很快,启停都是秒级,而相比传统虚拟机方式要快很多。
Docker容器对系统资源需求很少,一台主机上可以同时运行数千个Docker容器。
Docker通过类似Git的操作来方便用户获取,分发和更新应用镜像,指令简明,学习成本低。
Docker通过Dockerfile配置文件来支持灵活的自动化创建和部署机制,提高工作效率。
Docker容器除了运行其中的应用外,基本不消耗额外的系统资源,保证应用性能的同时,尽量减小系统开销。传统虚拟机方式运行N个不同的应用就要启动N个虚拟机,而Docker只需要启动N个隔离的容器,并将应用放在容器内即可。




Docker容器技术可以实现自动化部署应用,把开发者从日常部署应用的繁杂工作中解脱出来,让开发者能专心写好代码;从系统工程师的角度来看也是一样,他们迫切需要从各种混乱的部署文档中解脱出来,让系统工程师专注在应用的水平扩展、稳定发布的解决方案上。就像docker提出来的目标“一次封装,到处运行”保证了应用程序环境一致性,同时更加轻松的迁移和扩展。
Docker容器对系统资源的利用率很高,节省了大量硬件资源和设备的用电量。Docker一直在面对技术挑战,从容地给出自己的解决方案。云计算发展至今,有很多重要的问题没有得到妥善解决,Docker正在尝试让主流厂商接受并应用它。




