什么是Docker
-
Docker是基于Go语言实现的开源容器项目。Docker已经加入了Linux基金会,并遵循Apache 2.0协议,开源代码托管与GitHub平台。在Linux基金会发布的一次“最受欢迎的云计算开源项目”调研活动中,Docker仅次于OpenStack项目,成为了云计算领域的热点技术项目之一,由此可见Docker技术在云计算领域中的重要地位。目前,主流的操作系统(Linux、macOS、Windows)都提供了对于Docker项目的支持。
-
Docker的设计思路是要实现“Build, Ship and Run Any App, Anywhere”,即通过对应用的封装(Packaging)、分发(Distribution)、部署(Deployment)、运行(Runtime)生命周期进行管理,达到应用组件级别的“一次封装,到处运行”。这里的应用组件,既可以是一个Web应用、一个编译环境,也可以是一套数据库平台服务,甚至是一个操作系统或集群。换言之,Docker技术实现的是一种标准化的封装技术,就如同Docker的标志所展示的那样,无论是web应用或是其他的APP,都被封装到了标准化的集装箱中,而这种集装箱可以在全球范围内的任何码头(互联网中的任意位置,包括物理机和虚拟机中)实现安装以及卸载。
-
提到Docker,就不得不提Linux的容器技术(Linux Containers, LXC),实际上Docker就是依托于LXC进行的设计开发,具体来讲就是Docker项目复用了一部分Linux操作系统的代码,因此在上面提到的三种操作系统中,Docker与Linux系统的兼容性最佳。
Docker技术的优势
- 云计算技术的繁荣,赋予了互联网新的意义。尤其是疫情时期的云课堂、云会议、云办公,以及现在各级政府在推动建设的云政务,都离不开云计算的支撑。在云时代,对于网络服务、应用提出了新的要求,即是要脱离对于底层物理硬件的限制,支持基于网络的“随时随地”可获取,所以,作为开发者需要一种新的创建分布式应用程序的方式,且支持快速分发和部署,这就是Docker所能够提供的优势之一。Docker通过容器来打包应用、解藕应用和运行平台,能够实现应用的快速迁移与部署。
- Docker在开发和运维中的其他优势如下:
- 更快速的交付和部署。Docker通过镜像来构建一套标准的开发环境,开发完成之后,测试和运维人员可以直接使用完全相同的环境来部署代码。通过这种方式,Docker技术提高了开发过程的交付和部署效率。
- 更高效的资源利用。相较于其他的虚拟化技术,Docker的运行过程不需要额外的虚拟化管理程序(VMM,Hypervisor),与传统的虚拟机方式相比,Docker的性能更高。
- 更轻松的迁移和扩展。Docker的容器设计概念,将代码和运行环境都封装到了一个“箱子”当中,且Docker技术几乎可以运行在任意的平台和操作系统中,因此迁移和扩展性更佳。
- 更简单的更新管理。Docker容器是基于Docker镜像构建的,Docker镜像又是基于Dockerfile构建的,因此只需要修改Dockerfile中的配置参数即可实现对于镜像,乃至容器的更新。
- Docker与虚拟机技术特性比较