Shell 实现的 Docker Bocker

GPL
SHELL 查看源码»
Linux
2015-09-19
红薯

Bocker 是一个用大约 100 行代码实现的 Docker。

依赖:

  • btrfs-progs

  • curl

  • iproute2

  • iptables

  • libcgroup-tools

  • util-linux >= 2.25.2

  • coreutils >= 7.5

基本使用方法:

$ bocker pull centos 7
######################################################################## 100.0%
######################################################################## 100.0%
######################################################################## 100.0%
Created: img_42150

$ bocker images
IMAGE_ID        SOURCE
img_42150       centos:7

$ bocker run img_42150 cat /etc/centos-release
CentOS Linux release 7.1.1503 (Core)

$ bocker ps
CONTAINER_ID       COMMAND
ps_42045           cat /etc/centos-release

$ bocker logs ps_42045
CentOS Linux release 7.1.1503 (Core)

$ bocker rm ps_42045
Removed: ps_42045

$ bocker run img_42150 which wget
which: no wget in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)

$ bocker run img_42150 yum install -y wget
Installing : wget-1.14-10.el7_0.1.x86_64                                  1/1
Verifying  : wget-1.14-10.el7_0.1.x86_64                                  1/1
Installed  : wget.x86_64 0:1.14-10.el7_0.1
Complete!

$ bocker ps
CONTAINER_ID       COMMAND
ps_42018           yum install -y wget
ps_42182           which wget

$ bocker commit ps_42018 img_42150
Removed: img_42150
Created: img_42150

$ bocker run img_42150 which wget
/usr/bin/wget

$ bocker run img_42150 cat /proc/1/cgroup
...
4:memory:/ps_42152
3:cpuacct,cpu:/ps_42152

$ cat /sys/fs/cgroup/cpu/ps_42152/cpu.shares
512

$ cat /sys/fs/cgroup/memory/ps_42152/memory.limit_in_bytes
512000000

$ BOCKER_CPU_SHARE=1024 \
    BOCKER_MEM_LIMIT=1024 \
    bocker run img_42150 cat /proc/1/cgroup
...
4:memory:/ps_42188
3:cpuacct,cpu:/ps_42188

$ cat /sys/fs/cgroup/cpu/ps_42188/cpu.shares
1024

$ cat /sys/fs/cgroup/memory/ps_42188/memory.limit_in_bytes
1024000000

当前实现的功能:

  • docker build

  • docker pull

  • docker images

  • docker ps

  • docker run

  • docker exec

  • docker logs

  • docker commit

  • docker rm / docker rmi

  • Networking

  • Quota Support / CGroups

 

加载中

评论(1)

rootchina
rootchina
reinvent wheels? #Bocker#

暂无资讯

暂无问答

厉害了!100 行代码竟然实现了 Docker

关注“CloudDeveloper” 云计算领域大小事,你都能尽在掌握 转自:http://t.cn/E5EdpzX 作者:张志远 最近逛github无意发现了一个很好地项目bocker, 用上百行的代码就实现了一个简易的docke...

2020/04/23 14:24
8
0
如何用100行实现Docker?

最近逛github无意发现了一个很好地项目bocker, 用上百行的代码就实现了一个简易的docker,然后我看了一下,觉得挺有趣的,简单的玩了一下,也做一些更改(项目很久不更新了,有不支持的地方)...

2020/01/16 13:15
5
0
Perl多线程目录扫描

纯属手贱写着玩。。。这几天心情比较郁闷。 所以动手写了下。 #!/usr/bin/perl use HTTP::Request; use LWP::UserAgent; use Getopt::Long; use threads; use Thread::Semaphore; use...

2014/02/13 10:04
28
0
ActiveMQ学习(三)

启动ActiveMQ的broker的几种方式 broker是什么? 这是一个很重要的概念,broker实际上就是ActiveMQ的服务器,就是核心。 1.命令方式启动 在Linux上用命令启动broker:到bin下执行./activemq ...

2018/11/10 15:51
23
0
UCloud 分布式消息队列 UMQ 设计与架构演进

本文整理自广州 OSC 源创会上肖丁老师的演讲。消息队列普遍存在于各大业务系统中,起到业务模块解耦、异步通信等作用。作为一个产品化的队列服务,UMQ 需要更多的考虑高性能、高可用,来保证...

2016/12/07 00:56
2.8K
5
Docker 还需要学吗?

去年中在 Hacker News 上有篇热帖 “Goodbye Docker: Purging is Such Sweet Sorrow” 这篇文章内容其实很常规,无非是自己使用 Docker 的时候遇到了一些问题,最后切换到了 Podman buildah...

2020/04/23 22:16
23
0
Docker 还需要学吗?

去年中在 Hacker News 上有篇热帖 “Goodbye Docker: Purging is Such Sweet Sorrow” 这篇文章内容其实很常规,无非是自己使用 Docker 的时候遇到了一些问题,最后切换到了 Podman buildah...

2020/04/24 07:20
2
0
消息队列学习(一)

消息队列学习(一) [TOC] 前言: 本文是学习和参考李玥老师的消息队列高手课,一方面帮助自己学习记录,另一方面作为分享 1,为什么使用消息队列? 1.1,进程间通信 消息队列设计之初就是为...

2019/12/22 16:31
10
0

没有更多内容

加载失败,请刷新页面

没有更多内容

返回顶部
顶部