Docker 学习笔记:第1节 初遇 Docker

----摘录《Docker 极简入门指南》

本节要点:

  • Docker 是什么?
  • Docker 重要概念
  • Docker 镜像(Image)
  • Docker 容器(Container)
  • Docker 仓库(Registry)
  • 为什么使用 Docker?

Docker 是什么?

Docker 可以把 Linux 系统像集装箱一样封装起来运行,就好像虚拟机一样,并且额外开销很低,一台笔记本几十个“虚拟机”不成问题;速度快,毫秒级启动。轻量容器,让软件可以在任何安装了 Docker 的主机上运行,而不用关心底层操作系统。

Docker 把可以运行的 Linux 系统装载到容器(container)里,每个容器都像一个独立的 Linux 系统一样可以运行指定的程序。比如,一个容器可以作为 Web 服务器,另一个容器作为数据库服务器。 容器之间也都是独立的,一个容器不能操作另一个容器的资源,因此可以很好地隔离运行环境。 

Docker 利用了 Linux 的资源分托机制(cgroups 以及命名空间)来创建独立的软件容器。Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大简化了容器的创建和维护,使得 Docker 技术比虚拟机技术更为轻便快捷。

cgroups资料:

https://tech.meituan.com/2015/03/31/cgroups.html

https://blog.51cto.com/13616359/2311054

Dockers的好处:

  • 隔离应用依赖
  • 创建应用镜像并复制
  • 创建易于分发的即开即用的应用或者应用镜像
  • 允许实例简单快速扩展
  • 易于测试和销毁

Docker 重要概念

Docker 镜像(Image)

通俗解释: 镜像类似于一个系统安装光盘,你可以使用一个安装光盘为多台电脑安装操作系统,同样,你也可以用同一个镜像构建多个运行的 Docker 实体——容器。

专业一点的解释: Docker 镜像是一个特殊的文件系统,类似于 Linux 的 root 文件系统,镜像提供了容器运行时所需的程序、库、资源、配置等文件,还包含了一些为运行时准备的一些配置参数。镜像是一个静态的概念,镜像不包含任何动态数据,其内容在构建之后也不会被改变。

由于镜像包含完整的 Linux root 文件系统,所以它可能会很庞大。利用 Unions FS 技术,把 Docker 设计为分层存储的结构,意思是说,镜像是分层构建的,每一层是上面一层的基础,每一层在构建完成之后都不会再发生变化。构建镜像的时候我们要保证每一层都只包含我们的应用需要的东西,不要有包含不需要的文件,因为每一层在构建之后不再发生变化,所以即使你在之上的层删除了那些不需要的文件,这些文件也只是被标记为删除,实际上并没有真正删除;如果每一层都包含一些可有可无的文件,就会使得我们的镜像越来越臃肿。一个镜像实际上并不是一个文件,而是一组分层文件。分层存储还使得不同的镜像可以共享某些层,便于镜像的复用

Docker 容器(Container)

你可以从镜像创建容器,就像从快照创建虚拟机一样。容器是一个动态的概念,你的程序都是在容器里运行的

容器就是一个进程,但是它有自己独立的命名空间,拥有自己独立的文件系统,独立的网络等资源。因此,容器就好像一个完全独立于宿主主机的操作系统一样,完全可以被当做一个独立的操作系统使用

容器也是分层存储的,但是当容器消亡的时候,容器的存储层也会随之消失。因此,我们不应该在容器的存储层写入数据,文件的写入操作需要使用其它的方式,这会在之后的教程介绍。

Docker 仓库(Registry)

Docker 仓库是一个集中存储和分发镜像的服务,你可以建立自己的私有仓库,也可以使用共有仓库,比如 Docker Store。你可以从仓库里搜索你需要的镜像,也可以把你自己构建的镜像分享到仓库供别人下载使用。

为什么使用 Docker?

Docker 是一种新兴的虚拟化方式,但是,Docker 不是虚拟机,传统的虚拟机是先虚拟硬件资源,然后在虚拟的硬件资源之上运行操作系统。而 Docker 容器作为一个进程,直接运行于宿主主机内核,因此 Docker 更加快捷,下图是虚拟机和 Docker 的对比:

 

 

enter image description here

 

正是由于这些不同,使得 Docker 具有很多优势:

  • 高效利用系统资源(没有虚拟硬件的额外开销)。
  • 更快的启动时间(通常可以在1秒内启动)。
  • 便于部署(镜像包含了应用和相关依赖,可以运行在任何配置了 Docker 的主机上)。
  • 轻松迁移。
  • 分层存储,提高存储效率。

 

 

你可能感兴趣的:(Docker)