cocker 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
cocker 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票

软件简介

1. 概述

1.1. cocker是什么

cocker是我个人用C语言完全自研的容器引擎(对标Docker),主要解决如下工作场景中的痛点:

  • 原生支持多进程架构的容器使用模式,无须引入第三方组件。

  • 按虚拟主机方式管理容器,交互式构建镜像,写过复杂Dockerfile的人都深恶痛绝。

  • 镜像多版本共存管理。

  • (更多...)

cocker使用到了以下Linux底层技术:LXCcgroupoverlayfsiptablesptms等。

1.2. 系统架构

images/cocker_architecture.png

在LXC中,容器只是内核命名空间隔离的根进程以及子进程树,隔离域有主机名字、进程空间、根文件系统、IPC、网络等。cocker完整的实现了以上所有隔离域,在容器管理设计上倾向于虚拟主机方式,也支持类似Docker的单进程方式。

cocker自带了容器根进程,负责通过伪终端方式桥接容器内外,而不是必须通过ssh

cgroup负责隔离域的系统资源管控,包括CPU、内存等。

1.2.1. 状态迁移图

images/cocker_state_transition_diagram.png

cocker镜像可以本地构建或从镜像库上传下载,镜像库目前只支持ssh服务端,后续版本中会加入cocker原生服务器。

cocker镜像允许不同版本共存,创建容器时可以指定镜像版本,或者默认最新版。镜像可以复制和删除,也可以修改版本号。

cocker容器创建出来后可以启动、关闭和销毁。修改容器属性如虚拟IP、端口映射和卷映射必须在容器关闭状态下进行。

cocker镜像可以转化为cocker容器便于交互式修改,然后再转化回来。

1.2.2. 层叠文件系统

images/cocker_overlayfs.png

层叠文件系统是多镜像容器的存储基础,cocker采用overlayfs作为其层叠文件系统引擎,可以叠加几乎无限的镜像层。

cocker的镜像和容器等都存放在环境变量COCKER_HOME指向的主目录中,所以规划其容量是使用前必须要考虑的问题。如果没有设置环境变量COCKER_HOME,则默认指向/var/cocker

COCKER_HOME主目录中有镜像主目录images、容器主目录containersssh镜像仓库srepo,以及日志文件cocker.log

1.2.3. 网络

images/cocker_network.png

cocker支持三种网络模型:HOST、CUSTOM和BRIDGE。

网络模型说明
HOST无预置网络环境
CUSTOM仅仅预置网络命名空间,不创建容器内外网卡等,由完全由用户自设置
BRIDGE预置以NAT方式的容器向宿主机的网络连通方式、自定义多组指定端口映射转发的宿主机向容器的网络连通方式

首次执行cocker会创建网桥设备cocker0,网段为166.88.0.x

1.2.4. 系统资源限制

images/cocker_cgroup.png

cocker目前只实现了CPU核分配、时间片占用百分比分配、内存分配,其它系统资源在后续版本中会逐渐完善。

1.2.5. 伪终端

images/cocker_pty.png

自带容器根进程接受客户端cocker连接后会创建伪终端会话,就像登录到虚拟主机上命令交互一样,无需使用ssh

1.3. 快速使用

使用主控工具cocker快速创建一个小型测试镜像,里面调用了自带脚本cocker_install_test.sh构建根文件系统。

然后使用指令-a boot基于刚刚创建的镜像test启动一个容器test,并且直接打开一个会话连接到容器中的伪终端...退出伪终端后,使用指令-a shutdown关闭容器,最后使用指令-a destroy销毁容器。

# cocker -a install_test
OK
# cocker -s images
image_id                       version    modify_datetime     size      
--------------------------------------------------------------------
test                           _          2018-11-10T09:21:12 24 MB
# cocker -a create -m test -c test
OK
# cocker -a boot -c test -t   
connect to container ok
--- Welcome to cocker contrainer ---

[root@test /root] exit
logout
# cocker -a shutdown -c test
OK
# cocker -a destroy -c test
OK

...

2. 最后

2.1. 关于cocker

欢迎使用cocker,如果你使用中碰到了问题请告诉我,谢谢 ^_^

源码托管地址 : 开源中国github

2.2. 关于作者

厉华,主手C,写过小到性能卓越方便快捷的日志库、HTTP解析器、日志采集器等,大到交易平台/中间件等,分布式系统实践者,容器技术爱好者,目前在某城商行负责基础架构。

通过邮箱联系我 : 网易Gmail

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (50)

加载中
哥们,你还在不?你的机会来了,加加油
08/19 09:34
回复
举报
总感觉云时代使用C开发容器,感觉开发效率是根本跟不上的。
2019/01/16 19:36
回复
举报
收藏+拜读。厉害!佩服
2019/01/07 14:17
回复
举报
烦请再让k8s支持下cocker
2019/01/07 09:47
回复
举报

引用来自“Lison-Liou”的评论

cock是不是屌的意思
cocker就是屌丝的意思
2019/01/04 22:17
回复
举报
优秀的一塌糊涂
2019/01/02 17:42
回复
举报
作为多年未碰过C的菜鸟javaer, 还能说什么呢,顶礼膜拜中。作者厉害之处在于,他没有停留在一个想法,也没有止步于几张设计文稿,而是实实在在地用代码把东西做出来了。不管实现了多少预期的功能,也不管某些功能是否有阉割走样,但这个实现的过程本身就非常伟大。满满的正能量。不过想到国人一向自悲和不自信的劣根性,估计会有不少说风凉话的人给你负面评价。千万不要被这些言论所左右,不做事的人,永远比做事的人正确。
2019/01/02 14:54
回复
举报
支持
2019/01/02 09:39
回复
举报
用C语言写一套有什么意思哦?
2018/12/28 18:54
回复
举报

引用来自“Lison-Liou”的评论

cock是不是屌的意思
也有鸡的意思(鸡肉的鸡)
2018/12/27 21:44
回复
举报
更多评论
发表于云计算专区
2018/11/26 23:20

独立自研容器引擎 cocker 发布 0.27.0 版本,对标 Docker 和阿里 Pouch

更新说明: 0.27.0 2018-11-26 calvin * 解决了连接容器后执行有些命令会卡死的问题 * 解决了cockerinit没有及时回收僵尸进程的问题 * 文档中增加了 场景示例 章节 0.26.0 2018-11-25 calvin * 解决了cocker指令'-a import'的一个版本号处理问题 0.25.0 2018-11-20 calvin * 新增cocker指令'-a putfile'用于复制容器外文...

7
12
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
07/24 21:33

docker搭建并使用activeMQ

第一步:docker search 查找docker镜像地址,找stars最多的 docker search activemq 第二步:拉取镜像 docker pull docker.io/webcenter/activemq 第三步:查看镜像 docker images 第四步:创建并启动镜像 docker run -d --name acticemq_ian -p 61616:61616 -p 8161:8161 --restart=always docker.io/webcenter/activem...

0
0
07/23 22:13

docker搭建并使用activeMQ

第一步:docker search 查找docker镜像地址,找stars最多的 docker search activemq 第二步:拉取镜像 docker pull docker.io/webcenter/activemq 第三步:查看镜像 docker images 第四步:创建并启动镜像 docker run -d --name acticemq_ian -p 61616:61616 -p 8161:8161 --restart=always docker.io/webcenter/activem...

0
0
发表于AI & 大数据专区
08/29 23:11

2018 年度国产开源软件新秀榜单

来源于开源中国整理分享 开源中国社区在 2018 年新收录了近 2000 款开源软件,种类林林总总。根据开源软件的关注度和活跃度,以及它们在功能上的独特构思,最终产生了这份 2018 年度国产开源软件新秀榜。现在,让...

0
0
08/15 12:26

在AWS上部署、监控和扩展机器学习模型

作者|Aparna Dhinakaran 编译|Flin 来源|towardsdatascience 部署健壮的、可扩展的机器学习解决方案仍然是一个非常复杂的过程,需要大量的人力参与,并做出很多努力。因此,新产品和服务需要很长时间才能上市,或...

0
0
发表了博客
2019/01/23 09:43

2018 年度新增开源软件排行榜之国产 TOP 50

2018 年开源中国社区「新增」开源软件排行榜之国产 TOP 50 终于发布了! 榜单根据 2018 年开源中国社区新收录的开源项目的关注度、活跃度,以及所属分类整理而来,相信在一定程度上反映了国内大部分开发者在 2018...

0
7
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了问答
2019/01/06 21:44

【开源访谈】厉华:写一个开源容器引擎会是什么样的体验?

2013年,Docker.Inc 开源了一款应用容器引擎 Docker。开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到相同内核的任何 Linux 机器上部署运行。这种集装箱式的应用开发和部署方式降低了开发人员在开发、测试和部署软件时的压力。Docker 自2013年推出以来,深受开发者喜爱。 今天我们请到的嘉宾,是一...

22
57
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
50 评论
146 收藏
分享
返回顶部
顶部