Kubernetes就是基于容器的集群管理平台
就在Docker容器技术被炒得热火朝天之时,大家发现,如果想要将Docker应用于具体的业务实现,是存在困难的——编排、管理和调度等各个方面,都不容易。于是,人们迫切需要一套管理系统,对Docker及容器进行更高级更灵活的管理。
Kubernetes 中部署的最小单位是 pod,而不是 Docker 容器。实现上 Kubernetes 是不依赖于 Docker 的,完全可以使用其他的容器引擎在 Kubernetes 管理的集群中替代 Docker。在与 Docker 结合使用时,一个 pod 中可以包含一个或多个 Docker 容器。但除了有紧密耦合的情况下,通常一个 pod 中只有一个容器,这样方便不同的服务各自独立地扩展。
docker的出现,是为了解决容器的编排问题(容器本身没有价值,容器编排解决了开发生产环境不一致的问题,同时解决了大规模部署问题,也大大方便了我们开发,运维成本)。
具体用途:
(1)标准化打包。
(2)隔离。
(3)标准化部署。
虚拟机和容器的区别:
(1)共享宿主机资源还是模拟:
虚拟机采用模拟的方式,通过Hypervisor的软件即硬件虚拟化功能,模拟操作系统运行的必备硬件,比如CPU、内存、I/O设备等。
容器其实就是宿主机上的一个进程,所以本质上还是用的宿主机的硬件。
(2)隔离性
虚拟机是Hypervisor来实现强隔离机制。容器是软隔离,消耗资源也比较少。容器只能看到Namespace所限定的资源,网络,文件,状态,设备或者配置等。而完全看不到宿主机及其它不相关程序。
(3)启动数量
容器启动数量要远远多于虚拟机的启动数量。容器依赖的资源更少。
一种特殊的文件系统,它除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(例如环境变量)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
Dockerfile制作说明
https://docs.docker.com/engine/reference/builder/
运行镜像服务
托管公共镜像