Docker简介

docker简介

前置知识

  • Linux命令
  • git
  • Docker相关开发语言和技术
    • Swarm
    • Compose
    • Mesos
    • Machine
    • k8s
    • CI/CD Jenkins整合

是什么

Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroupnamespace,以及 OverlayFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,从 0.7 版本以后开始去除 LXC,转而使用自行开发的 libcontainer,从 1.11 版本开始,则进一步演进为使用 runCcontainerd

  • 问题:为什么会有Docker出现

    • 开发和运维环境的差异导致部署失败
  • 出于高并发以及快速响应的需要,系统新功能需要快速上线(秒级)

    • 软件可以带环境安装
    • 安装的时候,把原始环境一模一样地复制过来
      开发人员利用Docker可以消除协作编码时“在我的机器上可以正常工作”的问题
  • Docker理念

    • 打破代码即应用的理念,变成镜像即应用
  • 一次构建,处处运行

  • 一句话

    • 是解决了运行环境和配置问题的软件容器,是方便做持续集成并有助于整体发布的容器虚拟化技术

能干嘛

  • 之前的虚拟机技术

    • 虚拟机是带环境安装的一种解决方案
    • 它可以在一种操作系统里面运行另一种操作系统,应用程序对此毫无感知。虚拟机看上去跟真实系统完全一样,对于底层系统来说,虚拟机就是一个普通文件,不需要就可以删除。
      这类虚拟机完美地运行了另一套系统,能够使应用程序、操作系统和硬件三者之间的逻辑不变
    • 缺点:
      • 资源占用多
      • 冗余步骤多
      • 启动慢
  • 容器虚拟化技术

    • Linux发展了另一种虚拟化技术,LXC

    • Linux容器不是模拟一个完整地操作系统,而是对进程进行隔离
      容器和虚拟机不同,不需要捆绑一个完整的操作系统,只需要软件工作所需要的库资源和设置

    • 重点就是容器是共用操作系统内核的,不进行硬件虚拟

    • 每个容器是相互隔离的,每个容器都有自己的文件系统,容器之间进程不会相互影响,能够区分计算资源

  • 开发/运维(DevOps)

    • 开发自运维
    • 一次构建,随处运行
      一次构建是指开发工程师做一次构建
      无需运维工程师再做构建
      随处运行是指对于这个构建的交付物,可以随处运行
      • 更快捷的应用交付和部署
      • 更便捷的升级和扩缩容
      • 更简单的系统运维
      • 更高效的计算资源利用
  • 企业级

去哪下