Docker--初识

基础:

Docker是基于Go语言开发的开源项目

官网:https://www.docker.com/

文档地址:https://docs.docker.com/  Docker的文档是超级详细的

仓库库地址:https://hub.docker.com/  git里面的命令也能使用

Docker百度百科:https://baike.baidu.com/item/Docker/13344470?fr=aladdin

为什么会出现Docker?

开发人员和运维人员之间微妙的问题:

     我在我的电脑上可以运行,为什么到你电脑上就不可以了呢?

     版本更新,导致服务不可用

场景:

     原来:要发布一个项目jar或war,直接把jar或war给运维

          在服务器上配置一个应用环境,环境配置每一个机器都要部署环境,配置超麻烦,费时费力,不能够跨平台。 (跨平台概念是软件开发中一个重要的概念,即不依赖于操作系统,也不依赖硬件环境。一个操作系统下开发的应用,放到另一个操作系统下依然可以运行。相对而言如果某种计算机语言不用修改代码即可做到高度跨平台,那么此语言就越抽象,硬件控制力就越低,只适合开发高度抽象的模型系统。诸如PHP和易语言,都已做到了跨平台。它们将可以在多种系统下开发,运行和维护。)

Docker针对上面的问题,给出了解决方案:

     现在:开发打包部署上线,一套流程做完

           (jar+(Redis  MySql  jdk  ES)),项目带上环境安装打包

           即java---jar(环境)---打包项目带上环境(镜像)---(Docker仓库:商店)---下载发布的镜像---直接运行即可!        

Docker历史?

在容器技术出来之前,我们使用的是虚拟机技术。

虚拟机是如何做的?在Windows系统中安装一个虚拟机软件例如Vmware,通过这个软件我们可以虚拟出来一台或多台电脑!

传统的虚拟机技术

虚拟机技术缺点:

1.资源占用多,模拟了完整的操作系统,比较笨重

2.冗余步骤多

3.多个启动很慢

容器技术

容器化技术不是模拟的一个完整的操作系统,只模拟了最核心的环境

比较Docker和虚拟机技术的不同:

~传统虚拟机,虚拟出一套硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件,不过比较笨重,好处是模拟出来的每一个电脑和真正的电脑是差不多的,而且相互隔离

~容器内的应用直接运行在宿主机的内核,容器是没有自己的内核的,没有虚拟我们的硬件,所以就轻便了。每个容器间是相互隔离的了,每个容器内核都有一个属于自己的文件系统,互不影响

~虚拟机也是属于虚拟化技术;Docker容器技术,也是一种虚拟化技术。

Docker能干嘛?

一个新名词:DevOps(开发,运维)https://baike.baidu.com/item/DevOps/2613029?fr=aladdin这是对我们开发人员的新要求,他包括四个重要的特点:

i.应用更快速的交付和部署

传统:一堆帮助文档,安装程序

Docker:打包镜像发布测试,一键运行

ii.更便捷的升级和扩缩容

使用了Docker之后,我们部署应用就和搭积木一样,可以打包一起升级

 一个服务器上可以运行多个容器,容器之间可以交互

iii.更简单的系统运维

在容器化之后,我们的开发,测试环境都是高度一致的

 iv.更高效的资源利用

Docker是内核级别的虚拟化,在一个物理机上可以运行很多的容器实例,服务器的性能可以被压榨到极致

名词概念

镜像(image):

Docker镜像就好比是一个模板,可以通过这个模板来创建容器服务,tomcat镜像===>run===>tomcat1容器(提供服务器),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)

容器(container):

Docker通过容器技术,可以独立运行一个或者一组应用

容器是通过镜像来创建的

容器可以启动,停止,删除基本命令

目前,可以把容器理解为一个简易的Linux系统,我们的项目就是放在这个简易的Linux系统上

仓库(repository):

仓库就是存放镜像的地方

仓库分为公有仓库(所有人可以访问)和私有仓库(只有自己可以访问)

官方的Docker仓库:Docker  Hab(默认是国外的)

猜你喜欢

转载自blog.csdn.net/hejingfang123/article/details/115346586