Docker学习笔记——基本概念

Docker相对虚机的优势

  1. 更高效地利用资源
    docker不需要运行硬件虚拟以及运行完整操作系统等额外开销;相对虚机,一个相同配置的主机,一般可以运行更多的应用

  2. 更快速的启动时间
    docker容器应用,直接运行于宿主内核,无需启动完整的操作系统,节约开发、测试、部署的时间

  3. 一致的运行环境
    docker的镜像提供了除内核外完整的运行时环境,保证应用运行环境一致性,不会出现开发环境、测试环境、生产环境不一致导致的bug事件。

  4. 持续交付和部署
    docker通过定制应用镜像实现持续集成、持续交付、部署。
    开发通过dockerfile进行镜像构建,结合持续集成系统进行系统测试,运维可直接在生产环境快速部署该镜像,也可结合持续部署系统进行自动部署

  5. 更轻松的迁移
    docker确保执行环境一致性,应用迁移更容易,多个平台运行结果一致

  6. 更轻松的维护和扩展
    docker使用分层存储和镜像技术,可使重复部分复用更容易,应用维护更新更简单,基于基础镜像进行扩展镜像更简单。

Docker三大基本概念

一、 镜像(Image)
二、 容器(Container)
三、 仓库(Repository)

  1. 镜像
  • 操作系统分为内核和用户空间,对于linux,内核启动后,会挂载root文件系统为其提供用户空间支持。
  • docker镜像,相当于一个root文件系统,镜像不包含动态数据,内容在构建后不会该改变。
  • docker镜像提供容器运行时所需要的程序、库、资源、配置、配置参数(匿名卷、环境变量、用户等)
  • 分层存储
    1. 利用Union FS技术,将镜像设计为分层存储的架构
    1. 镜像是一个虚拟的概念,有一组文件系统组成或是由多层文件系统联合组成
    1. 镜像一层层构建,前层是后层基础,每一层构建完不发生改变。后一层的任何改变只发生在本层。
    1. 构建镜像时,每一层尽量只包含该层需要的,额外的应在该层构建结束时清理
    1. 分层存储可使得之前构建好的镜像作为基础层,可进一步添加新层
  1. 容器
  • 镜像和容器类似类和实例,镜像是静态定义,容器是镜像运行时的实体,容器可被创建、启动、停止、删除、暂停等
  • 容器实质——进程,容器进程运行于属于自己的独立的命名空间,容器可由自己的root文件系统,网络配置,进程空间,用户ID空间。
  • 容器进程运行在隔离环境
  • 每一个容器运行时以镜像为基础层,在其上创建一个当前容器的存储层,为容器运行时读写准备的存储层为容器存储层
  • 容器消亡时,容器存储层也随之消亡,在其上保存的数据也会丢失。
  • 最佳实践:容器不应向存储层写数据,保持无状态化
  • 所有文件写入操作,应使用数据卷,或绑定宿主目录,这些位置的读写会跳过容器存储层,直接对宿主读写,性能、稳定性更好
  • 容器消亡、数据卷不消亡,它的生命周期独立于容器
  1. 仓库
  • 镜像构建完成,若需要在其他服务器使用,需要集中的存储、分发镜像的服务
  • 一个docker registry 可包含多个仓库,每个仓库可包含多个标签,一个标签对应一个镜像
  • 利用<仓库名>:<标签>指定时那个软件那个版本的镜像

你可能感兴趣的:(docker学习)