Docker学习及DevOps实践:1.Docker、k8s介绍
一、概念介绍
1.Docker能干什么?
首先,Docker是容器技术的一种实现。
- 简化配置:源代码、运行环境、配置都能够打包到一个容器里,这个容器可以运行在不同的环境里,这样开发、测试、生产环境会保持高度一致。
- 代码流水化管理
- 整合服务器
- 调试能力
- 提升开发效率
- 多租户
- 隔离应用
- 快速部署
2.Kubernetes(k8s)是什么?
k8s是一个容器编排的工具,即对容器的创建、管理、运维等等操作的工具。
一般在生产环境中会有非常多个容器去创建和维护,这就需要一个容器编排工具去帮助我们做这些事情。
二、容器技术
1.应用部署的发展
-
最开始物理机直接部署的局限性:
部署非常慢、成本非常高、资源浪费、难于迁移和拓展、可能会被限定硬件厂商 -
有了虚拟化技术后的优点:
一个物理机可以部署多个应用、每个应用独立运行在一个VM里、容易拓展(加物理机或虚拟机)、容易云化(可以借用阿里云创建虚拟机) -
虚拟化技术的局限性:
每一个虚拟机都是一个完整的操作系统,这个完整的操作系统也是需要消耗资源的,当虚拟机数量增多时,仅操作系统本身消耗的资源就会变多。
2.容器技术出现的原因
- 虚拟化技术存在局限性
- 开发和运维之间的矛盾:开发环境和生产环境不一致等等问题。
3.什么是容器
- 对软件及其依赖的标准化打包
- 能够实现应用之间相互隔离
- 共享同一个OS Kernel
- 可以运行在很多主流操作系统上
4.容器技术和虚拟化技术的区别
- 容器是APP层面的隔离
- 虚拟化是物理资源层面的隔离
5.Docker的历史
- 2004年已经出现容器技术LXC1.0
- 2013年dotCloud公司创建内部项目Docker,对LXC进行包装
- 2013年3月份Docker开源
- 2016年Docker开始分为企业版(收费)和社区版