一、为什么要使用容器?
背景:以前开发、测试、生产为不同的环境,痛点是发现开发测试以后没问题,但是在生产环境无法运行。给测试、开发、运维人员造成了大量的工作。最终结果是发版更新速度也跟不上,效率低
我认为使用容器的核心原因:降本增效
容器可以屏蔽底层操作系统的差异性,让业务应用无论在哪里都使用容器的环境运行,可以保证开发测试环境与生产环境的一致性;
容器部署起来非常便捷,可以缩短开发测试部署的周期,极大提高了效率;
容器相当于宿主机进程,几乎没有性能损耗,资源利用率高
二、docker概述
1、docker是什么
Docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源。
Docker是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”。
Docker 的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。
Docker的Logo设计为蓝色鲸鱼,拖着许多集装箱。
鲸鱼可看作为宿主机,集装箱可理解为相互隔离的容器,每个集装箱中都包含自己的应用程序。
Docker的设计宗旨:Build,Ship and Run Any App,Anywhere,
即通过对应用组件的封装、发布、部署、运行等生命周期的管理,达到应用组件级别的“一次封装,到处运行”的目的。这里的组件,既可以是一个应用,也可以是一套服务,甚至是一个完整的操作系统。
2、docker有哪些特点
容器化越来越受欢迎,因为容器是:
●灵活:即使是最复杂的应用也可以集装箱化。(比如ELK)
●轻量级:容器利用并共享主机内核。(共享!!)
●可互换:可以即时部署更新和升级。
●便携式:可以在本地构建,部署到云,并在任何地方运行。(一次封装,到处运行)
●可扩展:可以增加并自动分发容器副本。
●可堆叠:可以垂直和即时堆叠服务。
容器是在linux上本机运行,并与其他容器共享主机的内核,它运行的是一个独立的进程,不占用其他任何可执行文件的内存,非常轻量。
虚拟机运行的是一个完整的操作系统,通过虚拟机管理程序Hypervisor对主机资源进行虚拟访问,相比之下需要的资源更多。
二、容器与虚拟机的区别是什么
1、底层系统
每个容器是共享宿主机的内核
每个虚拟机拥有独立的操作系统和内核
2、隔离性
容器通过namespace做资源隔离,通过cgroup限制资源使用量比如cpu 内存 磁盘等;