Docker概念
- 容器化平台
- 将一个软件包装在一个完整的文件系统中,包含运行所需的一切:代码,运行时,系统工具,系统库等,从而无需考虑环境配置的变化
优势
容器无需启动操作系统内核,因此,容器可在不到 1 秒钟时间内运行起来。使得容器化技术比其它虚拟化技术更具有独特性及可取性。
容器化技术几乎不给主机系统增加负载,因此,基于容器的虚拟化技术具有近乎原生的性能表现。
基于容器的虚拟化,运行时不需要其他额外的虚拟管理层软件。
主机上的所有容器共享主机操作系统上的进程调度,从而节省了额外的资源的需求。
与虚拟机 image 相比,容器映像较小, 因此,容器映像易于分发。
容器中的资源分配由 Cgroups 实现。 Cgroup能够限制CPU 使用率(CPU 限制)、内存使用限制、磁盘 I/O 读写速率、网络带宽、设备访问权限
三种主要技术途径
- 存储卷(volumn)
- 环境变量注入
- 只读文件系统
dockerFile配置文件中的Copy和Add区别
- Copy只是将本地文件拷入容器
- Add在拷贝文件的基础上有一些其他特性,比如本地自动解压归档文件到容器中
Docker image是什么
- docker image是Docker容器的源,用于创建Docker Container
- image常被分层设计,每层单独成为一个小image,多层小image构成大image。这种碎片化的设计使得image在网上共享时,可以最小化传输数据需求。
分层机制
- 基础层
- 依赖层
- 应用层
- 配置层
Docker Container
Container包含所有的运行依赖环境,不依赖特定的基础平台
Docker Hub
docker hub是云基础的Docker注册服务平台,它允许用户访问 Docker中心资源库,创建自己的 Docker 映像并测试,推送并存储创建好的 Docker映像,连接 Docker 云平台将已创建好的指定 Docker 映像布署到本地主机等任务。
Docker容器的运行阶段
- Running
- Paused
- Restarting
- Exited
虚拟化技术
在一个硬件平台下运行 2 个完全不同的操作系统。每个客户操作系统可完成像系统自检、启动、载入系统内核等像在独立硬件上的一切动作。同时也具备坚实的安全基础,例如,客户操作系统不能获取完全访问主机或其它客户系统的权限,及其它涉及安全,可能把系统搞坏的操作。
三种常见的虚拟化技术:
- 全模拟(Emulation)
- 半虚拟(Paravirtualization)
- 基于容器的虚拟化(Container-based virtualization)
虚拟管理层
hypervisor – 虚拟管理层(程序)– 负责创建客户虚拟机系统运行所需虚拟硬件环境。它监管客户虚拟操作系统的运行,并为客户系统提供必要的运行资源,保证客户虚拟系统的运行。虚拟管理层(程序)驻留在物理主机系统和虚拟客户系统之间,为虚拟客户系统提供必要的虚拟服务。
硬件层面的虚拟化技术支持:
- VT
- AMD-V
孤儿卷
孤儿卷 是没有被任何容器挂载或使用的 Docker 卷,它们可能会占用磁盘空间。
主要成因:删除容器时未清理卷、匿名卷未手动删除、异常退出等。
有状态性的Docker应用场景
有状态性 Docker 应用的问题关键在于状态数据保存在哪儿的问题。若所有数据保存在容器内, 当更新软件版本或想将 Docker 容器移到其它机器上时,找回这些在运行中产生的状态数据将非常困难。运行Container时需要将containerFolder挂载到本机文件夹内保持运行时状态
About this Post
This post is written by ByronGu, licensed under CC BY-NC 4.0.