Docker学习(一):Docker介绍、特性与内部组件

一、Docker介绍

Docker提供了一个可以运行你的应用程序的封套(envelope),或者说容器,会像一个可移植的容器引擎那样工作,它把应用程序及所有程序的依赖环境打包到一个虚拟容器中,这个虚拟容器可以运行在任何一种Linux服务器上,这大大提高了程序运行的灵活性和可移植性。Docker是一种容器技术。

二、Docker特性

1、文件系统隔离:每个进程容器运行在完全独立的根文件系统里,容器之间相互隔离

2、资源隔离:可以使用cgroup为每个进程容器分配不同的系统资源,例如CPU和内存

3、网络隔离:每个进程容器运行在自己的网络命名空间里,拥有自己的虚拟接口和IP地址

4、写时复制:采用写时复制方式创建根文件系统,这让部署变得极其快捷,并且节省内存和硬盘空间

5、日志记录:Docker将会收集和记录每个进程容器的标准流(stdout/stdeer/stdin),用于实时检索或批量检索

6、变更管理:容器文件系统的变更可以提交到新的映像中,并可重复使用以创建更多的容器。无需使用模板或手动配置

7、交互式shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次性交互shell

三、Docker工作原理

Docker使用客户端-服务器(C/S)架构模式。Docker客户端与Docker守护进程进行通信。Docker守护进程会处理复杂繁重的任务,例如建立、运行、发布你的Docker容器。Docker客户端和守护进程可以运行在同一个系统上,当然你也可以使用Docker客户端去连接一个远程的Docker守护进程。Docker客户端和守护进程之间通过socker或者restful api进行通信。

四、Docker内部组件

Docker内部组件包含以下内容:

1、Docker镜像 - Docker images

2、Docker仓库 - Docker registeries

3、Docker容器 - Docker containers

Docker镜像

Docker镜像是Docker容器运行时的只读模板,每一个镜像由一系列的层(layers)组成。Docker使用UnionFS来将这些层联合到单独的镜像中。UnionFS允许独立文件系统中的文件和文件夹(称之为分支)被透明覆盖,形成一个单独连贯的文件系统。正因为有了这些层的存在,Docker是如此的轻量

当你改变了一个Docker镜像,比如升级到某个程序到新的版本,一个新的层会被创建。因此,不用替换整个原先的镜像或者重新建立(在使用虚拟机的时候你可能会这么做),只是一个新的层被添加或升级了。现在你不用重新发布整个镜像,只需要升级,层使得分发Docker镜像变得简单和快速

Docker仓库

Docker仓库用来保存镜像,可以理解为代码控制中的代码仓库。同样的,Docker仓库也有公有和私有的概念。公有的Docker仓库名字是Docker Hub。Docker Hub提供了庞大的镜像集合供使用。这些镜像可以是自己创建,或者在别人的镜像基础上创建。Docker仓库是Docker的分发部分

Docker容器

Docker容器和文件夹很类似,一个Docker容器包含了所有的某个应用运行所需要的环境。每一个Docker容器都是从Docker镜像创建的。Docker容器可以运行、开始、停止、移动和删除。每个Docker容器都是独立和安全的应用平台,Docker容器是Docker的运行部分

经验分享 程序员 微信小程序 职场和发展