Docker学习及DevOps实践:1.Docker、k8s介绍

一、概念介绍

1.Docker能干什么?

首先,Docker是容器技术的一种实现。

  • 简化配置:源代码、运行环境、配置都能够打包到一个容器里,这个容器可以运行在不同的环境里,这样开发、测试、生产环境会保持高度一致。
  • 代码流水化管理
  • 整合服务器
  • 调试能力
  • 提升开发效率
  • 多租户
  • 隔离应用
  • 快速部署
2.Kubernetes(k8s)是什么?

k8s是一个容器编排的工具,即对容器的创建、管理、运维等等操作的工具。
一般在生产环境中会有非常多个容器去创建和维护,这就需要一个容器编排工具去帮助我们做这些事情。


二、容器技术

1.应用部署的发展

Docker学习及DevOps实践:1.Docker、k8s介绍

  • 最开始物理机直接部署的局限性:
    部署非常慢、成本非常高、资源浪费、难于迁移和拓展、可能会被限定硬件厂商
  • 有了虚拟化技术后的优点:
    一个物理机可以部署多个应用、每个应用独立运行在一个VM里、容易拓展(加物理机或虚拟机)、容易云化(可以借用阿里云创建虚拟机)
  • 虚拟化技术的局限性:
    每一个虚拟机都是一个完整的操作系统,这个完整的操作系统也是需要消耗资源的,当虚拟机数量增多时,仅操作系统本身消耗的资源就会变多。
2.容器技术出现的原因
  • 虚拟化技术存在局限性
  • 开发和运维之间的矛盾:开发环境和生产环境不一致等等问题。
3.什么是容器
  • 对软件及其依赖的标准化打包
  • 能够实现应用之间相互隔离
  • 共享同一个OS Kernel
  • 可以运行在很多主流操作系统上
    Docker学习及DevOps实践:1.Docker、k8s介绍
4.容器技术和虚拟化技术的区别
  • 容器是APP层面的隔离
  • 虚拟化是物理资源层面的隔离
    Docker学习及DevOps实践:1.Docker、k8s介绍
5.Docker的历史
  • 2004年已经出现容器技术LXC1.0
  • 2013年dotCloud公司创建内部项目Docker,对LXC进行包装
  • 2013年3月份Docker开源
  • 2016年Docker开始分为企业版(收费)和社区版