容器 vs 虚拟机

Docker可以类比虚拟机,但在虚拟机中,每个单独的虚拟机有自己的操作系统。如果每个项目需要独立部署在一个环境中,那么多项目部署就会涉及大量的虚拟机,正如上文所言,每台虚拟机会有操作系统,就会存在体量大的问题。而将所有的项目存放在一台虚拟机中就失去了独立存放、独立管理的意义,也会出现一个程序崩溃污染所有程序的问题。

所以容器则更有优势,多个容器可以只在一个操作系统上面部署,解决多个操作系统体量大的问题。VM启动要几十秒到分钟级,容器启动是秒级甚至毫秒级。容器可以包含一个应用程序,如此而言即使面临程序的崩溃只会在这个容器中,相应地隔离了其他程序,保证了其他程序的安全。

解决环境一致性问题

不仅如此,容器技术也利好环境问题。在面对开发和运维的不同岗位、不同用户的实际使用情况时,避免了不同机器上环境配置不一致的问题,即开发的时候是一套环境,而运维时则会有版本问题、缺少环境。

面对这一情况,只需要开发将自己部署的项目放在一个容器内部,在这个容器内部保存了必要的开发环境,并且将该容器打包上传,要使用该容器的用户拉取镜像构建运行项目,则解决了环境问题。

Docker核心技术点

对于Docker的一些具体技术点:

基础命令

  • run:运行容器

数据持久化

Docker提供两种数据持久化方式:目录挂载(bind mount)卷(volume) 。如果没有挂载,容器删除后数据会丢失;配置挂载后,数据会保存在宿主机或Docker管理的卷中,即使删除容器,重新创建并挂载时数据依然存在。

网络与通信

  • 端口映射:将容器内部端口映射到宿主机
  • 自定义网络:创建容器间通信的网络
  • 容器名作为DNS:容器名就是内部的稳定域名,使容器之间的通信更加方便

高级技术

  • Redis主从同步:通过Docker实现Redis集群部署
  • Dockerfile:定义镜像构建流程
  • Docker Compose:多容器编排构建

这是作者在学习Docker过程中的总结,欢迎交流讨论。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐