我与Docker的初体验

322 阅读3分钟

「这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战

Docker是个啥,这我哪知道

为啥要用它,我也不清楚

疑问起因:办公楼下金色满园的一个深秋滴大中午,我被大领导架到了他的小工位边,说是上层的云计算平台环境搭建好了,让我把我们的测试环境迁移到这上面,测试环境没问题就直接上生产,给他大刀阔斧的“淦”

那么要解决这个问题,都要用到哪些技术呢?

首先分析,这个计算平台的所拥有的的资源:

  • 集成了已有的Git代码库
  • 程序制品库、docker镜像库
  • K8S资源
  • 还有其他中间件服务资源 那么这么着,咱们的目标就初步明确了,就是将之前在物理或者虚拟服务器上部署的tomcat迁移到K8S资源平台中的容器中去,那么就要学习一下这个部署方式和部署环境了

那么第一步要学习的就是这个Docker容器了

Docker概念

Docker 是一个开放源代码软件,是一个开放平台,用于开发应用、交付(shipping)应用、运行应用。 Docker允许用户将基础设施(Infrastructure)中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件的速度。

Docker容器与虚拟机类似,但二者在原理上不同。容器是将操作系统层虚拟化,虚拟机则是虚拟化硬件,因此容器更具有便携性、高效地利用服务器。 容器更多的用于表示 软件的一个标准化单元。由于容器的标准化,因此它可以无视基础设施(Infrastructure)的差异,部署到任何一个地方。另外,Docker也为容器提供更强的业界的隔离兼容。

——据维基百科说 听起来也就那么回事昂,不过如此嘛,我这个复制粘贴小码农还解决不了它,除了复制粘贴,码哥我也是个shell脚本小能手啊

Docker优势

  • 更高效的利用系统资源
  • 更快速的启动时间
  • 一致的运行环境
  • 持续交付和部署
  • 更轻松的迁移
  • 更轻松的维护扩展

演变历史

Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 OverlayFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,从 0.7 版本以后开始去除 LXC,转而使用自行开发的 libcontainer,从 1.11 版本开始,则进一步演进为使用 runC 和 containerd。

与传统虚拟机的区别

image.png

带着这些优势,我们准备后续将虚拟机转变为docker容器部署,带着前辈们的杰出成果,去做更多!