Salve, rapaziada! Teve uma vez que eu estava lendo o código fonte do Docker e percebi que dava pra fazer um software similar ao Docker usando somente Shell Script, cheguei a até postar isso no meu perfil do Facebook , e muita gente se interessou por isso.
Mas como é sempre bom dar uma “stalkeada” na internet antes, percebi que alguém teve a mesma ideia que a minha.
Não que isso seja motivo pra você deixar de executar seu projeto. Já existir um software similar não é desculpa pra você criar a sua versão, que isso fique bem claro. E para aqueles da cultura: “Isso é reinventar a roda!” , sinto muito em lhe informar, mas isso aqui é SOFTWARE LIVRE , é também a liberdade de não ser obrigado a usar uma única coisa, é luta contra o monopólio de tudo! De nada.
No entanto, eu criaria só pelo motivo de mostrar que é possível, logo, quando conheci esse projeto, já posso utilizar para justificar minhas afirmações.
O Bocker é um Docker implementado com somente de 100 linhas de Bash, ou em torno disso.
Os pacotes necessários para você conseguir rodar o Bocker(as dependências) são:
Como a maioria das distribuições não fornece uma versão nova o suficiente do util-linux, você provavelmente precisará pegar os fontes daqui e compilá-los você mesmo.
Além disso, seu sistema precisará ser configurado com o seguinte:
/var/bocker
bridge0
e um IP de 10.0.0.1/24
/proc/sys/net/ipv4/ip_forward
bridge0
para uma interface física.Para facilidade de uso, um Vagrantfile é incluído, o qual criará o ambiente necessário.
Mesmo se você atender aos pré-requisitos acima, provavelmente ainda dá pra executar o Bocker em uma máquina virtual. O Bocker é executado como root
e, entre outras coisas, precisa fazer alterações em suas interfaces de rede, tabela de roteamento e regras de firewall. Segundo o desenvolvedor , é garantido que isso não destruirá seu sistema.
$ 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
A licença do Bocker é GPL-3.0 License e a paǵina oficial do projeto está no GitHub: