Docker入门学习一之初识Docker

一、初步认识Docker

      1.Docker历史

  • 2010 dotCloud PASS
  • 2013 docker开源
  • 2014.6 Docker 1.0
  • 2014.7 C轮 $4000万
  • 2015.4 D轮 $9500万
  • 至今 Docker 1.13

      2.什么是Docker?

  • Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
  • Docker is the world's leading software containerization platform
  • Docker公司开发,开源,托管在github
  • 跨平台,支持Windows、Macos、Linux

      3.Docker思想

  • 集装箱
  • 标准化:1.运输方式;2.存储方式;3.API接口
  • 隔离

      4.Docker解决了什么问题?

  • 我本地运行没有问题啊!Docker将操作系统,JDK,Tomcat,代码,配置放进集装箱里,再打包放到鲸鱼上,鲸鱼送到服务器上,解决了运行环境不一致的问题。
  • 系统好卡,哪个哥们又写死循环了?!内存泄漏?磁盘写满?服务变慢!
  • 双11来了,服务器撑不住啦!平时与双11服务器数量不一致,运维工作量巨大!Docker标准化让快速扩展、弹性伸缩变得简单!

二、走进Docker

      1.Docker三个核心概念

  • 镜像--->集装箱
  • 仓库--->超级码头
  • 容器--->运行程序的地方

      Docker运行程序的过程:去仓库把镜像拉到本地,用一条命令将镜像运行起来变成容器

  • Build--->构建镜像
  • Ship--->运输镜像,从仓库往主机运输
  • Run--->运行的镜像,就是一个容器

      2.Docker镜像

      镜像英文名image,鲸鱼驮着的所有的集装箱就是一个镜像,本质上来说,镜像就是一系列的文件,它可以包括应用程序的文件,也可以包括运行环境的文件,Docker把这些文件都保存到了本地。

      Docker以什么格式保存文件的呢?镜像的存储格式是使用的Linux的一种存储技术——联合文件系统unionfs,它是一种分层的文件系统,它可以将不同的文件目录挂到同一个虚拟文件系统下。比如,test1目录下有opt、usr、var三个文件夹,test2下有README、java、tomcat三个文件,联合文件系统可以在同一个文件夹下看到opt、usr、var、README、java、tomcat,即test1、test2文件的集合。通过这样的一种方式,联合文件系统就可以实现文件的分层,比如test1可以看成第一层(包括opt、usr、var),test2可以看成第二层(包括README、java、tomcat)。Docker镜像就是利用这种分层的思想来实现镜像的存储。

      Docker入门学习一之初识Docker

      下面这张图是一个镜像的存储格式,可以明显看到这张图是分层的,就像是一个个的集装箱摞在一起,这就是镜像的最直观的存储方式。

  • 最底层是一个操作系统地引导
  • 第二层是一个具体的Linux操作系统
  • 第三层是一个具体的相关的软件,如果是我们的应用程序,这一层可能就是JDK,Tomcat
  • 第四层是一个具体的相关的软件,可以存放我们的应用代码,每一层都是可以自己控制
  • 最上层是暂时忽略,在容器中介绍
  • 注意:Docker镜像的每一层都是只读的,然后每一层加载完成之后,所有层的文件都会看成是同一个目录,相当于只有一个文件系统,Docker这种文件系统就称为镜像。

      Docker入门学习一之初识Docker

      2.Docker容器

      Docker容器本质就是一个进程,为了便于理解,可以先把容器想象成一个虚拟机(看上图),每个虚拟机都有自己的文件系统,大家可以把整个一部分看作是容器的文件系统,也就相当于虚拟机所有的文件系统。与虚拟机的区别在于,它这里面的文件系统是一层一层的,而且下面的N层都是只读的,只有最顶层是可读可写的(因为程序运行起来肯定是需要做一些日志、文件或者对系统文件做一些修改等操作)。

      如果程序运行中要写一个镜像里的文件,会发生什么呢?

      因为镜像中的每一层都是只读的,所以它在写这个文件之前,会先把这个文件所在这层拷贝到容器的最顶层,然后再对它进行修改,修改之后,当我们的应用读一个文件时,会先从顶层开始查找,如果没有才会接着找下一层,因为这个文件已经被拷贝到了最顶层了,在最顶层才能找到它最新的内容。

      由于容器的最顶层是可以修改的,而镜像每层都是只读的,这样就可以保证同一个镜像可以生成多个容器独立运行,而且它们之间不会互相干扰!

      3.Docker仓库

      构建镜像的目的是为了能在不同的机器、环境中运行。

      (1)但是如何完成将镜像从本地到目的地传输过程呢?

      这就需要用到Docker仓库,首先需要将镜像放入Docker仓库中去,再由目的地从Docker仓库中将镜像拉过去。

      (2)但是谁提供的Docker仓库呢?

      那肯定是需要有一个*服务器,提供一个地址,让我可以去访问它。

      (3)但是谁提供这样的服务呢?

      Docker自己就提供了!

      地址:

  • hub.docker.com 但是之前被墙了,现在开放了,访问速度很慢
  • c.163.com 国内服务 网易蜂巢镜像中心

 

本文为原创文章,如果对你有一点点的帮助,别忘了点赞哦!比心!如需转载,请注明出处,谢谢!

 

转载于:https://my.oschina.net/aibinxiao/blog/1559748