11,Docker是什么?一篇文章解决你的大部分疑问
1,没用容器化方式部署时,我们部署项目的一般流程
举个例子,假设我们要部署一个SSM项目,那么首先我们需要购买一台云服务器,然后安装JDK,tomcat,mysql等依赖的关键组件,然后再把项目打包上线部署,运行调试,验证程序运行结果。一切看起来都挺好的,但是问题来了,如果我们把这个项目做集群部署10台服务器,那么就意味着什么?上述的一系列安装依赖环境的动作,我们都需要重复做一遍。
另外一个问题,相信大家在工作中也会经常遇到,就是本地环境没问题,测试环境没问题,生产环境却出现问题,这样情况常常是因为依赖的环境存在一些差异而造成的,所以综上所述,这些都是体力活,我们需要一个更好的解决方案,它的名字叫Docker。
2,什么是Docker?
Docker正是解决了上述提到的问题,将服务(SSM项目)及运行环境加以封装,并确保将这个封装后的产物作为我们的交付物,这个交付物可以随时构建,装载,运行,不会再因为环境的差异带来了影响,而且这个交付物我们还只需要封装一次,避免了重复的依赖环境安装工作。
下面来一段比较正式的描述:
Docker 是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源产品。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 Docker本质是基于Linux的LXC技术,来实现相互的隔离,使用沙箱机制,更重要的是容器性能开销极低,因为是共享了宿主机的共同内核。
3,Docker的几个关键概念
Docker官网:
Empowering App Development for Developers | Docker3.1,什么是Docker引擎
Docker引擎可以理解为一个运行在服务器上的后台服务,也称为Docker Daemon,我们只要启动该服务,就能通过Docker命令客户端发送Docker命令与Docker引擎进行通信,Docker客户端分为命令终端窗口和REST API客户端。
上面的图中,这只鲸鱼就是Docker引擎(Docker Engine)上面的一个个集装箱就是Docker容器(Docker Container) Docker引擎可以运行在基于Docker的云平台上。
3.2,什么是Docker镜像
Docker镜像可以认为是我们的光盘,光盘上刻录了数据,只要将光盘放入光驱中,就能读取光盘中的数据;同样,我们获取Docker镜像(光盘),并将其载入Docker引擎(光驱)中,就可以运行Docker镜像中的程序。
所以,我们将程序及其依赖环境打包到Docker镜像中,然后将Docker镜像重复使用。
3.3,什么是Docker容器
当我们运行Docker镜像,便会启动一个Docker容器,该容器将会运行镜像中封装的程序。 如果将Docker镜像理解为Java类的话,那Docker容器就相当于类的实例。 一个Docker镜像可以运行多个Docker容器,只要机器的性能足够好就行。
3.4,什么是Docker镜像中心
Docker镜像中心,就是类似于我们的maven仓库,统一管理我们的第三方依赖,那么Docker镜像中心顾名思义就是帮助我们来管理镜像的,可以是第三方共享的镜像,也可以是我们自己封装打包的镜像。
Docker官网提供了一个叫Docker Hub的镜像注册中心(Docker Registry) 用于存放公有和私有的Docker镜像仓库(Docker Repository)。 我们可以通过Docker Hub下载镜像,也可以将自己创建的镜像推送到Docker Hub上。 同时,Docker Hub也将自己的核心组件Docker Registry进行了开源,我们可以获得其镜像,在局域网内快速搭建一套私有的Docker镜像注册中心。
dockerHub地址:
Docker Hub相关文章