Docker 学习笔记:第1节 初遇 Docker
Posted Frank201608
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 的对比:
正是由于这些不同,使得 Docker 具有很多优势:
- 高效利用系统资源(没有虚拟硬件的额外开销)。
- 更快的启动时间(通常可以在1秒内启动)。
- 便于部署(镜像包含了应用和相关依赖,可以运行在任何配置了 Docker 的主机上)。
- 轻松迁移。
- 分层存储,提高存储效率。
以上是关于Docker 学习笔记:第1节 初遇 Docker的主要内容,如果未能解决你的问题,请参考以下文章