Hello!欢迎各位新老朋友来看小弟博客,祝大家事业顺利,财源广进!!
这篇文章主要介绍了容器化技术,包括 Docker 和 k8s 的相关内容。阐述了容器化时代的演进,Docker 的诞生、优势及使用方法,k8s 出现的原因、架构组件,还对比了 Docker Swarm 与 k8s,探讨了 Docker 与 k8s 的关系及开发实践中的常见问题。强调了容器化技术在解决环境不一致等问题上的作用。
随着 k8s 作为容器编排解决方案变得越来越流行,有些人开始拿 Docker 和 k8s 进行对比,不禁问道:Docker 不香吗?
k8s 是 kubernetes 的缩写,‘8’ 代表中间的八个字符。
其实 Docker 和 k8s 并非直接的竞争对手,它俩相互依存。 Docker 是一个容器化平台,而 k8s 是 Docker 等容器平台的协调器。
1:容器化时代来了
虚拟化技术已经走过了三个时代,没有容器化技术的演进就不会有 Docker 技术的诞生
(1)物理机时代:多个应用程序可能会跑在一台机器上。
(2)虚拟机时代:一台物理机器安装多个虚拟机(VM),一个虚拟机跑多个程序。
(3)容器化时代:一台物理机安装多个容器实例(container),一个容器跑多个程序。
容器化解决了软件开发过程中一个令人非常头疼的问题,用一段对话描述:
测试人员:你这个功能有问题。
开发人员:我本地是好的呀!
开发人员编写代码,在自己本地环境测试完成后,将代码部署到测试或生产环境中,经常会遇到各种各样的问题。明明本地完美运行的代码为什么部署后出现很多 bug,原因有很多:不同的操作系统、不同的依赖库等,总结一句话就是因为本地环境和远程环境不一致。
容器化技术正好解决了这一关键问题,它将软件程序和运行的基础环境分开。开发人员编码完成后将程序打包到一个容器镜像中,镜像中详细列出了所依赖的环境,在不同的容器中运行标准化的镜像,从根本上解决了环境不一致的问题。
⭐虽然容器概念已经出现不短的时间,但 2013 年推出的开源项目 Docker 在很大程度上帮助推广了容器这项技术,并推动了软件开发中容器化和微服务的趋势,这种趋势后来被称为云原生开发。
2. 容器化技术的尖刀武器
- 可移植性:不依赖具体的操作系统或云平台,比如在阿里云或腾讯云直接随意迁移。
- 占地小:容