您的位置:首页 > 运维架构 > Docker

【Docker】Docker的简介

2017-06-16 11:57 302 查看

简介:

  今天带着大家了解一下docker。

  在介绍docker之前,我们先来认识一下docker。

  我们来启动一个容器,(以ubuntu系统为例)。

Docker run –it Ubuntu /bin/bash


 

 

  这时候,我们可以看到,我们已经进入了docker的虚拟世界。前面的root表示用root账号登陆。后面的d8121ac8d0f9表示容器的名称。下面我们来运行一下基本shell命令,来看一看这个容器到底师哥什么样子的,如下图。



  我们会发现,在容器里面的环境和我们普通虚拟机的环境基本是一样的。包含了基本的文件系统,进程等。所以这和我们以往的虚拟机有很大的相似性。这是因为docker的容器技术就是虚拟化的一种。

容器:

1)下面我们来看看什么是容器:

  容器技术以一种虚拟机化的方案,它与传统的虚拟机不同,传统的虚拟机是将一台或者几台独立的机器通过中间层,虚拟机的运行在物理硬件之上。而容器技术,是直接运行到操作系统内核之上的用户空间。也正是因为容器技术是直接运行早操作系统的内核之上,所以特别依赖操作系统的内核,为此,容器只能运行与操作系统相同或者相似的内核的操作系统。

2)容器技术的优点:



  在图上,我们的可以明了的看出来,最大的优点就是磁盘占用率少。使用虚拟机部署应用,除了包含应用和应用必须的库文件,还需要包含完整的(庞大的)操作系统,也许应用和库文件只需要几十兆即可,可是却需要安装几个G的操作系统来支撑。

  而使用容器,只要包含应用和其需要的库文件。

  另外虚拟机需要模拟硬件的行为,所以对内核cup的损耗特别的大。所以使用容器技术,能节省很多的资源,为用户提高更多的服务。

Docker简介:

  上面已经介绍了容器技术,有很强大的功能,但是其应用非常的复杂,使用非常的不方便。而docker的出现,就是为了改变这一切。那什么是docker呢。

  Docker是一种由go语言开发,能将应用程序自动部署到容器中的一种技术。

1)Docker的优点:

A) 提供了简单轻量的部署建模方式,只需要几秒钟就可以完成应用的部署。

B) 资源占用率低,在一台机器上能提供更多的服务。

C) 职责的逻辑分离。有了docker,开发人员只需要关心容器弄的内容,运维人员只需要管理容器。实现了开发环境和部署实验环境的一致性。

Docker的组成:

l  Docker的客户端

l  守护进程(服务端)

l  镜像

l  容器

l  仓库

1)Docker的客户端和守护进程(服务端)

  Docker采用c/s架构,可以通过本地、远程的等方式,客户端向服务端发送命令并从服务端返回处理后的结果。

2)docker的镜像(image)

  镜像是容器运行的基石,容器基于镜像运行,镜像就像是容器的源代码,保存运行容器的各种条件。

从更深层次的讲,镜像是层叠式的只读文件系统。如下图,最低端是bootfs(boot file system),也类似linux的引导系统,向上第二层是rootfs文件系统,位于引导文件系统之上,rootfs(root file system)可以说一种或者多种操作系统,比如ubuntu和centos等。在docker中rootfs是只读系统,并且会通过联合加载(即一次加载多个文件系统)的方式在rootfs上加载更多的只读文件系统,但是在外面看,我们只能看到一个文件系统,因为通过联合加载,将bootfs和rootfs以及通过联合加载的其他文件系统叠加到以前,这样最终的文件系统包含属于的底层文件和目录。

那么上面用一大段话解释的那个最终的文件系统就是docker中的镜像。在docker中,我们我们的镜像可以叠加,相邻的两个镜像,上面的是子镜像,上面的是父镜像。而最顶层的是基础镜像。



3)docker的容器(Container):

  容器中包含用户的一个或者多个服务,并且容器通过镜像启动,因为我们可以这样说,如果镜像是应用的构建和打包,那么容器就是启动和执行。那么容器是如何启动的的呢?

  下图就是我们刚才讲的镜像,当一个容器被启动的时候,会在最上面在创建一个可写层。刚刚创建的时候,可写层是空的,在以后的容器操作中都会反映到这一层中。如果我们需要修改某一文件,那么可写层就会从下面的只读层复制一份文件到可写层,并修改可写层中的文件。而只读层中的文件并不会修改,只会被可写层中的副本所隐藏。这就是传说中的“写时复制(copy on write)”。个人感觉这有体现了“极简主义”。

  说了半天,那么什么是容器呢,是哪个可写层嘛?当然不是,可写层和下面的只读文件系统构成了容器。



4)Docker的仓库

  仓库分为公有和私有。Docker公司提供了一个公有的docker仓库叫做dockerHUB。在dockerhub中可以下载公有镜像,并将我们自己的私有镜像保存到dockerhub上并可以共享。



图片来自网络
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: