1-1 容器基础
最后更新于:2022-04-02 07:36:49
#### 容器技术、虚拟化技术、传统部署的区别?
##### 传统
- 部署慢(准备环境,上传,重启)
- 成本高(购买硬件成本)
- 资源浪费(闲置资源过多)
- 难于迁移和扩展(程序迁移依赖,升级复杂)
- 可能被硬件厂商限定(x86架构)
##### 虚拟化技术
- 物理资源虚拟化
- 一个物理机部署多个APP
- 每个APP运行在一个VM里面
- 一个物理机的资源分配到不同的虚拟机里,提升硬件资源利用率
- 容易扩展(增加物理机)
- 很容易云化(迁移阿里云)
缺点
- 运行在完整操作系统之上,系统本身消耗资源大
##### 容器技术
- 对软件和其依赖的标准化打包
- 应用之间的隔离
- 共享同一个OS Kerne
- 可以运行在很多主流操作系统
##### 容器技术解决了什么?
对开发
> 技术栈多,环境复杂,依赖多
对运维
>环境复杂,部署效率低,扩展难
- 解决了运维和开发之间的矛盾(建立统一标准,统一环境,和生产环境保持一致)
- 在开发和运维之间搭建了一个桥梁(Devops的基础)
#### 容器技术、虚拟化技术、传统部署的区别?
##### 传统
- 部署慢(准备环境,上传,重启)
- 成本高(购买硬件成本)
- 资源浪费(闲置资源过多)
- 难于迁移和扩展(程序迁移依赖,升级复杂)
- 可能被硬件厂商限定(x86架构)
##### 虚拟化技术
- 物理资源虚拟化
- 一个物理机部署多个APP
- 每个APP运行在一个VM里面
- 一个物理机的资源分配到不同的虚拟机里,提升硬件资源利用率
- 容易扩展(增加物理机)
- 很容易云化(迁移阿里云)
缺点
- 运行在完整操作系统之上,系统本身消耗资源大
##### 容器技术
- 对软件和其依赖的标准化打包
- 应用之间的隔离
- 共享同一个OS Kerne
- 可以运行在很多主流操作系统
##### 容器技术解决了什么?
对开发
> 技术栈多,环境复杂,依赖多
对运维
>环境复杂,部署效率低,扩展难
- 解决了运维和开发之间的矛盾(建立统一标准,统一环境,和生产环境保持一致)
- 在开发和运维之间搭建了一个桥梁(Devops的基础)

##### 容器和虚拟机的区别

#### 什么是Devops?
](images/screenshot_1604980048928.png)
#### 代码部署流程

#### Docker底层技术
- 提供了一个开发、打包、运行APP的平台
- 把APP和底层基础设施隔离开
- Docker是个C/S架构
Docker Engine
#### Docker底层技术
- 提供了一个开发、打包、运行APP的平台
- 把APP和底层基础设施隔离开
- Docker是个C/S架构
Docker Engine

- 后台进程(dockerd,Server)
对资源进行管理
- REST API
- CLI接口(Docker)
Docker version可以看到客户端和服务端信息
Docker 内部架构

Docker并不是创新的技术,而是利用当前Linux成熟的技术
#### Glossary 词汇表
Namespace:做隔离pid,net,ipc,mnt,uts
Control groups: 做资源隔离
Union file systems:Contaner和image的分层
#### 什么是Image?
- ##### 文件和meta data的集合(root filesystem)
> 不包含内核,包含能让操作系统正常运行的,文件和文件夹的集合
- ##### 分层的,每层都可以添加删除文件,成为一个新的image
- ##### 不同的image可以共享相同的layer
>不同操作会产生一个新的层级,新的操作可以在这个分层上产生新的分层
- ##### Image本身是read-only的

';