Java进阶篇-通俗易懂的去理解Docker概念

1 Docker概述

首先Docker大致包括了三个主要概念:镜像、容器、仓库。通俗的说就是为了解决不同系统和环境的程序运维工具。

对于Java开发者来看。程序所打成的Jar包就已经可以实现一次编译,到处编译的标准了。那么为什么还要使用Docker呢?

首先基于现实开发者角度来看.我们通常的开发环境是Windows或者Mac,通过eclipse或者idea进行代码的编写和开发。到最后的打包完成后,通常会部署到专用的linux服务器或Windows服务器上。

那么会不会出现类似的问题:

  1. 服务器和本地的PC机不能兼容?例如Windows和Linux跨系统部署,或者Windows版本不同
  2. 代码逻辑不够完善导致MD5加密在不同系统之间出现字符编码不同,最终导致加密结果不同
  3. 通过jar包部署后,服务器上的JDK版本与本地PC机版本不同而导致不能兼容
  4. 分布式环境下.多台服务器都需要为自己的程序部署相应的环境,耗时费力

以上只是较为常见的错误,更多错误还有可能来自数据库的错误

那么Docker的出现就是为了解决“本地运行无误,上线终端宕机”。再深入的讲就是为了我们的程序可以只需要让应用在Docker容器上配置一次,就可以实现跨平台的无缝衔接。

2 Docker的三大主要概念

2.1 引入

我们在了解这三个概念之前。先把自己想象成一个生物实现的科学家。此时你得到一个任务,需要从将一只远在南非的濒临物种——“小羊”进行克隆,并将其引入到其它国家。此时我们按照普通人的思维来看,克隆是否等于镜像?其实有一定的差异。

假设我们将小羊放到一扇镜子面前,镜子中浮现出小羊的样貌,但镜子可无法完整的复刻小羊,它只是通过光的折射让小羊浮现在镜面上,镜面中的小羊无法自主活动,它只能跟随自身的动作而做镜像运动。那如果我们需要它“活起来”怎么办?——克隆,我们将小羊的基因进行克隆,并将它放在特定舒适的环境下,假以时日后,它便具备了“生命”。带着这段话我们再去看Docker的三大概念。

2.2 镜像

Docker的镜像也是如此,我们可以把它看成一个特殊的文件系统.它复刻了你的程序,并提供了容器运行所需要的资源、配置文件还有一些环境变量等等,去赋予它所需要运行的基本环境。到这一步中,你的程序算是已经被“克隆基因”了。那么我们要如何让它“活起来”?请看下文。

2.3 容器

首先我们需要了解到,Docker的镜像是可以实例化多个容器的,就好比,小羊的基因是可以被多个复制的.你可以根据自己的心情去制造N个“克隆羊”。并且每个“克隆羊”之间都是独立的,你总不可能克隆出一个双头羊吧?那就不是克隆了,那是变异。复刻出的“小羊”之间没有任何依赖关系,每只羊都属于独立的个体。

2.2中我们通过镜像了解到,你的程序已经被提取了“基因”。那么我们如果要让它活起来,具备生命应该怎么做?这时就需要到容器了,毕竟人的生长都需要胎盘,更别提克隆小羊了。

扫描二维码关注公众号,回复: 14913842 查看本文章

容器就好比培养“克隆羊”的生长环境,有了它以后,你的程序就可以运行起来了。

这时我们可以了解到一个大致的概念:Docker的镜像是静态的,它只负责基础的复刻工作。但是Docker容器是动态的,它像一个简化的操作系统和一些核心基础应用。

那么如果我将两个不同物种的生物放到同一个容器环境下,会发生什么?科学大爆炸?当然这不符合科学,这显然会导致两个基因之间出现排斥,最终失败。所以容器也是如此,每个容器只能有一个独立运行的程序。也就是每个容器只能有一只小羊。

2.3 仓库

通过我们的不懈努力,小羊茁壮成长,现在你成功复制了一批小羊。那么我们要如何将它引入到其它国家呢?——仓库。科学家在南非将小羊克隆以后,我们将其打包放入一个仓库。其它国家需要引入的时候,就从这个仓库中去取就可以了。

我们可以利用Docker的仓库提供一个注册服务器。用于存储多个仓库,仓库就是用于存储镜像位置的。

我们现在克隆了小羊并放到仓库的过程就相当于你创建了Docker镜像,并通过push命令上传到自己创建的Docker仓库,后期其它服务器需要使用镜像时,就可以从仓库上pull下来。

2.4 总结

我们将镜像理解成一个CentOs系统的安装系统,每个镜像只是一个只读环境,这个镜像对应了它的容器。例如我们在CentOs系统中取安装Redis、Mysql等应用,它们都是一个容器,且每个容器都是单独运行的。仓库则是为了避免这些容器被杂乱无章的摆放。特意创建了一个收纳这些容器的地方,就好比我们的Maven仓库,我们需要引入依赖时,只需要从仓库中引入即可,而不是从网站上去搜索这些jar包的地址。

猜你喜欢

转载自blog.csdn.net/qq_33351639/article/details/129195459