Docker学习笔记(一) 简介
写在前面
学习Docker已经有大半年了,前段时间一直因为工作忙得不可开交,清闲下来之后还是决定继续撸博客,记录下自己学习的过程,同时也给猿友们一些参考,写得不对的地方,也请大家指出来。
接下来我要开始我的表演了~
概述
随着云计算的发展,容器技术变得越来越火,其中最出众的当属Docker。Docker也可以叫做轻量化虚拟技术,但它并不是虚拟机。相比传统的VM,它可以做到秒级启动,占用资源更少,一台服务器可以启动成千上万的容器。
Docker以容器为资源分割和调度的基本单位,基于LXC技术对进程进行隔离,这一个个进程就是Docker容器。可以在安装了Docker的linux服务器上输入命令pstree,如下图所示,即可看到OS的进程树,其中就有Docker容器的进程树。
Docker的每一个容器都封装了应用程序的代码,运行时的环境,依赖,配置文件等,与VM不同,容器不会捆绑一个完整的操作系统。所以Docker可以跨平台,发布和运行分布式应用,不受操作系统的限制,只要机器装了Docker,就可以愉快的pull需要的镜像,然后运行容器啦~这对于运维人员来说,就会大大降低他们的工作量,他们不用管这个容器里面需要运行的是Java,Node还是Python,所有的操作都被统一成了docker pull ...,docker run...。这就解决了程序员嘴里常说的一个问题:这东西明明在我机器上都能运行,怎么在你那里就不行了。
Docker改变了整个软件开发和部署的流程,按照我们传统的方式。以Java为例,我们要在服务器上运行一个Java应用,这时候我们需要先安装JDK,JDK安装好了,开始撸代码,这时候需要maven来做项目依赖管理和打包,又得安装maven,这些完成之后,发现还需要一个servlet容器来运行我们的项目,这时候又要搞一个tomcat或者jetty。这时候有的朋友会说:我就是学java的,这些环境配置根本难不倒我。没错,这些环境配置确实很基础,但是到了后面业务量剧增的时候,我们又要加服务器,这时候又得重复相同的环境配置工作。有了Docker,我们可以把这些组件打包成一个个镜像,推送到自建的私库,每次只需要从私库中拉下镜像,运行容器,搞定~是不是更加轻松加愉快呢。开发人员还可以通过CI工具比如jenkins来实现自动化部署发布,而操作的对象都是一个个的Docker容器。
总结
Docker官方logo的寓意非常明确,Docker容器就像一个个的集装箱,不用管里面装的是什么,只要装好了,放上船,就可以到任何地方使用。
Docker使用简单,不用费很大力气就能入门,多多练习就能非常熟练。但是Docker相关知识较多,也需要多花些时间才能学到精髓。