Docker基本组件、概念介绍
作者:互联网
一、容器是什么
1. 生活中
生活中容器代表某件物品能容纳、装载某些东西;如一个瓶子,可以分别装可乐、雪碧;也可以混合装白酒、红酒;此时的瓶子就是一个容器。
2. IT界中
在IT界中,容器是一种内核虚拟化技术,提供轻量级的虚拟化,以便隔离进程和资源。
二、Docker是什么
1. 通俗理解
Docker就是IT界中容通俗器技术实现方式;Docker类似于瓶子,而应用模块类似于饮料。瓶子太多了怎么办?会用箱子打包起来批量放置;此时箱子就类似于服务器,可以承载多个容器;每个瓶子装载的资源是相互隔离的,A瓶子裂了漏水,不会影响B瓶子的容量以及质量。
2. 版本
日常所说的Docker主要是指Docker引擎,主要有2个版本:企业版(EE)、社区版(CE)。
CE:免费使用,社区版会提供4个月的支持和维护。
EE:收费使用,企业版会提供12个月的支持和维护; 。
三、Docker由什么组成
1. Docker是传统的CS架构,主要由Docker client、Docker daemon,而官方又将daemon拆解重构为多个模块,如:containerd、run。
Docker client
在Linux上主要通过Socket(/var/run/docker.sock)与Docker Daemon进行通信;类似于MySQL的mysql client与mysql-server。
Docker daemon
提供Api接口,返回client响应
containerd
容器生命周期管理---start|stop|run|delete....
runc
创建容器
四、Docker 三个基本概念
1. 镜像
简单理解镜像就是一个只读的模板;深入来讲是一种轻量级,可执行的独立文件系统,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件的所有内容,包括代码,运行时,库,环境变量和配置文件。
以为代码案例,可以更好理解镜像的特点。
def Clac(argv1, argv2): try: inc_argv3=4 sum_result = argv1 + argv2 + inc_argv3 except Exception as e: sum_result = str(e) return sum_result
此时的**Clac**类就是一个模板,可以创建多个对象,如sum1=Clac(argv1,argv2)、sum2=(argv1,argv2)
特点
a. 由一行或多行特定的指令形成的一个模板;也被称为镜像文件。
b. 包含应用运行所依赖的文件、依赖包、环境等配置。
c. 从外部来看,镜像就是一个独立的对象,相当于一个简易的操作系统。
2. 容器
容器就是镜像运行的实例,每个容器都可以被启动,开始,停止,删除,同时容器之间相互隔离,保证应用运行期间的安全。
调用镜像Clac为例
sum1=Clac(1,2) sum2=Clac(1,"2")
此时**sum1**、**sum2**是调用类**Clac**创建的对象,也就是容器。
特点:
a. 由**一层或多层镜像**封装好的一个实例。
b. 实例被创建后,里面的资源不可在做更改。
c. 当镜像被修改后,已创建的实例不会变更;新创建的实例会继承镜像修改后的特性。
d. 删除容器前未删除关联的镜像,容器会删除失败。
e. 一个容器对应一个镜像,但一个镜像可以对应多个容器。
3. 仓库
集中存放镜像文件的场所,代码写完后一般会上传svn或gitlab托管库,当需要使用或变更时直接下载/上传即可;此时的仓库充当svn或gitlab角色。
仓库类型
a. 私有仓库(Private Registry)
docker-registry (docker官方提供的工具)
b. 共有仓库(Public Registry)
Docker Hub(因国内网络原因,下载镜像很蛋疼)
开源技术,如Harbor
厂商提供,如阿里云、网易云
五、Docker 镜像、模板、仓库三者之间的关联
六、Docker优势是什么(解决人肉运维什么痛点)
简化部署过程
只需要在第一次部署时,构建完可用的Docker镜像,后续再次部署时直接拉取镜像即可。
弹性伸缩
当组件需要扩容时,直接拉取镜像启动即可(无状态服务)。
可以移植性强
跨云平台迁移,基于容器制作镜像或拉取镜像部署。
资源隔离
同服务器可运行多版本jdk项目,互不影响。
环境统一性
环境不一致往往是造成问题最高的原因,通过镜像可很好掌控环境不一致问题。
版本控制
基于不通镜像设定不同仓库版本号,可随意发布任意版本。
标签:容器,仓库,Clac,瓶子,概念,组件,镜像,Docker 来源: https://blog.51cto.com/wangtianci/2673148