扯淡:
Docker技术现今已使用的非常普遍,Docker是一种虚拟化技术,类似虚拟机,但跟虚拟机相比有太多的优势。Docker技术的优势主要体现在运维部署能力上,完全KO传统的部署方式,最近几年微服务的流行,更是让开发者爱上了Docker,微服务 + SpringCloud + Docker 已是主流开发模式。
个人学习总结:
链接:【springboot、springcloud、docker 等,学习目录】
声明:
本章将以个人刚开始接触Docker遇到的问题引入Docker,下文中对Docker相关概念的解释并不正确,仅仅适合对Docker有初步的理解,知道Docker大概是干什么的,将以以下5个场景类比,引入什么是docker、镜像、仓库、容器四个问题(再次说明下文中对这四个问题的解释并不严谨,仅适合初步理解docker是干什么的)。
场景:
1、我们在电脑上安装了虚拟机(vmware)。
2、系统D盘中下载了系统镜像(win7、win8、centos7、ubuntud等)。
3、vmware上使用这些系统镜像虚拟出了几个系统。
4、系统1上安装了MySQL数据库,系统2上部署了Tomcat运行交友网的后端代码,系统3部署了nginx运行交友网的前端页面。
5、这三个系统独立运行,互不影响,共同支持者交友网的正常运行。
目的:结合以上5个场景理解docker、镜像、仓库、容器四个基本概念,理解 “docker从仓库拿取镜像运行成可独立运行的容器” 这句话。
什么是Docker:
一种虚拟化技术,应用容器平台。开发者只需要将自己在本机开发测试通过的代码及代码运行的环境一起打包,然后就可以交给运维,运维利用docker去管理,无论再运行多少份你的代码,其预期效果都是一样的,不再出现“在我的电脑上好好的,怎么到你那就不行了”这样会引发打架的问题。docker与虚拟机类似,但有很大的不同,我们初步理解docker可将它类比为虚拟机。
镜像(Image):
一个文件系统,包含了我们运行程序所需的代码、依赖、环境配置、系统内核等。镜像需要自己制作,例如:我们的项目需要使用docker部署,就需要将代码、运行环境打包成镜像到远程仓库,有些常用镜像我们可以直接从其他仓库拉取,例如:MySQL、Redis、Nginx的镜像,但这些镜像也是别人制作然后上传的。我们这里可以把镜像理解为上文中的系统镜像win7、cenos7、Ubuntu等。
仓库(Repository):
用来存放镜像的地方,仓库中可以有不同种镜像、不同版本的同种镜像等。国内比较权威的镜像仓库有阿里云镜像仓库、网易丰巢。我们可以将仓库理解为场景中的 “D盘”。
容器(Container):
1、问题:iphone 手机为什么用几年都不会卡?
解释:其内部采用的是沙箱模式,APP相互之间是不影响的,我们可以发现iPhone手机内部并没有文件管理,而容器就是采用的沙箱模式,性能开销极低。
2、什么是容器?
镜像创建出来的实体,Docker利用容器来运行一个应用,应用中有什么东西是根据镜像来的,例如:使用MySQL镜像创建出来的容器,那这个容器就具有MySQL的功能了。容器可以理解为场景中虚拟机上运行的系统1,可以启动、关机、重启、甚至删除。容器拥有自己独立的空间,其他容器不能影响,一个运行的容器就好比在独立操作系统的机器。
TIPS:
docker是应用容器平台,需要容器技术的支持,目前Windows系统并不支持容器技术,后续docker的使用会在Linux上,网上有很多文章说使用docker toolbox在windows系统上使用docker,实际上就是安装了一个虚拟机,所以推荐使用Linux云服务器,或者自己在虚拟机在安装Linux系统。
说明:
本章结合个人刚开始接触docker的疑惑引出docker的四个基本概念,可结合场景中的5点去初步理解,其中镜像、容器是使用docker会经常接触到的。
个人学习分享
更多 springboot、springcloud、docker 文章,关注微信公众号吧: