当前位置: 首页 > 软件库 > 云计算 > PaaS系统/容器 >

Bocker

Shell 实现的 Docker
授权协议 GPL
开发语言 SHELL
所属分类 云计算、 PaaS系统/容器
软件类型 开源软件
地区 不详
投 递 者 公冶子安
操作系统 Linux
开源组织
适用人群 未知
 软件概览

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

 

  • Bocker 详细介绍 Bocker 是一个用大约 100 行代码实现的 Docker。 依赖: btrfs-progs curl iproute2 iptables libcgroup-tools util-linux >= 2.25.2 coreutils >= 7.5 基本使用方法: $ bocker pull centos 7 ########################

  • 循环设备 /dev/loopx /dev/loop(或称vnd (vnode disk)、lofi(循环文件接口))是一种伪设备,这种设备使得文件可以如同块设备一般被访问。 fallocate -l 10G ~/test.img mkfs.btrfs ~/test.img mount -o loop ~/test.img /mnt/test df结果 [root@localhost /]#

  • 代码链接在此:https://github.com/p8952/bocker/blob/master/bocker,是英国系统工程师Peter Wilmott的作品,实际上还不到100行。 微博上有同学指出之前Docker也有一个lite版,可以参考。 有谁能解读一下?能就此直观地讲清楚Docker的运作原理多好。 Hacker News上的讨论对理解Docker也有价值。

 相关资料
  • 它为什么特别对待是2的幂的情况?只是为了表现吗? 它为什么拒绝数字?

  • 本节是对前两节内容的实践。我们以“词嵌入(word2vec)”一节中的跳字模型和“近似训练”一节中的负采样为例,介绍在语料库上训练词嵌入模型的实现。我们还会介绍一些实现中的技巧,如二次采样(subsampling)。 首先导入实验所需的包或模块。 import collections import d2lzh as d2l import math from mxnet import auto

  • 一、前言 上一章我们讲解了Memcached的消息回应机制《Memcached源码分析 - Memcached源码分析之消息回应(3)》。从这一章开始我们慢慢讲解Memcached是如何存储数据的。 讲解本章前,我们先看一个Memcached存储数据的item的基本结构。 //item的具体结构 typedef struct _stritem {     //记录下一个item的地址,主要用于

  • 本文向大家介绍MyBatis实现动态SQL的实现方法,包括了MyBatis实现动态SQL的实现方法的使用技巧和注意事项,需要的朋友参考一下 MyBatis 最强大的特性之一就是它的动态语句功能。如果您以前有使用JDBC或者类似框架的 经历,您就会明白把SQL语句条件连接在一起是多么的痛苦,要确保不能忘记空格或者不要在 columns列后面省略一个逗号等。动态语句能够完全解决掉这些痛苦。 ​尽管与动

  • 本文向大家介绍docker CPU限制的实现,包括了docker CPU限制的实现的使用技巧和注意事项,需要的朋友参考一下 1、--cpu=<value>         1)指定一个容器可以使用多少可用的CPU资源,但无法让容器始终在一个或某几个CPU上运行         2)例如:如果主机有2个CPU,设置--cpus="1.5",则可以报称容器醉倒 容纳一半的CPU,相当于设置--cpu-

  • 问题内容: hashCode方法的最佳实现中可接受的答案为查找哈希码提供了看似不错的方法。但是我是哈希代码的新手,所以我不太了解该怎么做。 对于1),选择哪个非零值有关系吗?是一样好其他数字,如:黄金? 对于2),我是否将每个值添加到c?如果我有两个字段都是一个,,,等? 我在这堂课上解释得对吗? 问题答案: 该值并不重要,它可以是您想要的任何值。质数将导致值的更好分布,因此首选。 您不必添加它们

  • 问题内容: 我刚刚开始学习android编程,并且对方法getResources()产生了疑问。我注意到,当我创建一个Resources对象时,我要做的就是: 第一个疑问是以下为什么我必须以这种方式做并且我不能使用java关键字 new ?我不应该这样做吗: 第二个疑问是:在文件的顶部,我导入了Resources类。 现在,我阅读了android api,它说getResources()是一个公共

  • 问题内容: AtomicInteger的getAndIncrement实现执行以下操作: 它不等于aVolatileVariable ++吗?(我们知道这是不正确的用法)。没有同步,我们如何确保此完整操作是原子的?如果在步骤1中读取了变量“ current”后,volatile变量的值发生了变化,该怎么办? 问题答案: “秘密调味料”在此调用中: 如果在读取 后 同时更改了原始易失性值,则该操作将