本文介绍了容器技术出现背景,docker技术与容器编排技术的简单说明
背景
在传统项目的生产环境中,迁移一个用户态进程往往非常麻烦,因为一个用户态进程背后会附带这非常多例如函数库、中间件等的依赖项,但又没有像apt和yum一样的技术能够一次性解决各种依赖项。万一在迁移时,出现了一些数据可能的丢失,一些参数的错误,经常会导致迁移之后进程无法正常拉活。
我们一般采用的是将虚拟机整个打包成image进行I2I的离线迁移,但是由于迁移的是整个操作系统,其中会包括对于这个进程大量无用的要素,臃肿的系统会导致整个过程非常缓慢。说白了,我们跑这个进程只需要那么几个东西,结果你给我整个系统都迁移过来了。
在软件开发的领域,一些开发环境、测试环境也面临着这样的问题,搭建环境往往是一个非常费时费力错误率很高的活动。
那么有没有什么技术能够解决上述的这个问题呢,有,这就是容器Container技术
容器与虚拟机对比
Docker
docker是最经典的容器技术,它分为两个版本
-CE版本(社区版)
——edge版-每月更新 体验版
——stable版-稳定版
-EE版本(企业版)
docker作为client的构成分为三部分
1、docker deamon 守护进程(提供docker服务)
2、docker restful-api(通过http/https 发起访问)
3、client docker cli(使用docker 命令行进行管理,管理内容包括容器、镜像、存储、网络)
docker的整体框架如下图所示
1、docker host运行docker主机
2、docker client命令行控制的客户端
3、docker registry镜像仓库
一般来说是由client通过pull命令通知docker daemon去registry拉取镜像到本地images,拉取完成后通过run命令通知docker daemon启动container
docker镜像的获取方式有两种,一种是从自己的docker file中构建,一种是从docker镜像仓库中获取
docker registry是存放容器镜像的仓库,用户可以进行镜像下载和访问,分为公有和私有两类registry
公有镜像仓库:
比如docker hub,是docker公司为公众提供的托管registry,是世界上最大的容器镜像仓库 Docker Hub
quay.io,是红帽的公共托管registry Repositories · Quay
私有镜像仓库:
可以由企业搭建私有registry,也可以由个人搭建,registry本身是一个开源的项目,可以用于搭建registry
容器编排
容器编排说简单点,就是容器的管理
类似于OpenStack管理kvm的虚拟机,容器编排技术就是通过写编排文件,对于底下的容器进行管理的过程,常用的容器编排软件有k8s,docker swarm
云原生的概念就是从中提取出的,
cloud native computing foundation(CNCF)基金会——隶属于linux基金会,由谷歌Google推出
CNCF其中一个开源项目就是kubernetes(K8s)
kubernetes是一个开源的,用于管理云平台中多个主机的容器化的应用
其目标是让部署容器化的应用简单高效,是能够自主的管理容器
不仅支持docker,也支持rocket等容器
containerd 容器技术框架
各家云厂商都有针对自己的云或者自己搞了个容器编排工具来支持自己的产品,
例如红帽基于kubernetes进行二次开发,推出了openshift
亚马逊推出了AWS ECS——Amazon Elastic Container Service