Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

github.com/realnfcs/didactic-container

Package Overview
Dependencies
Alerts
File Explorer
Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

github.com/realnfcs/didactic-container

  • v0.0.0-20230207220356-98200a0a415f
  • Source
  • Go
  • Socket score

Version published
Created
Source

didactic-container

📚 📦 Repository for learning how containers works in Go. ⚠️ In progress

The objective of the project is to create an environment/infrastructure like a Docker to understand concepts and methods such as the creation of containers and their configuration, management and download of images, among others. This repository is learning purpose only, any contribution is welcome.

Credits for:

Thanks for all knowledge you two have shared with us

  • Liz Rice / @lizrice
  • Fabio Akita / @akitaonrails

Documentation

This small documentation is on PT-BR (Portuguese, Brazil) idiom, in the future, the documentation will have a english idiom.

[PT-BR] ⚠️ Em progresso

O que é um container?

Containers são patchs na Kernel do SO que possibilita restringir os recursos do sistema aos processos. Com um conjunto de funcionalidade como Cgroups e Namespaces, podemos restringir o que o(s) processo(s) dentro do container conseguem usar e ver.

Fazemos a Kernel "mentir" para os processos. Essa "mentira" chamados de container. - Akita

Junto com as imagens, que são "cópias" ou snapshots de sistema operacional em um grande arquivo, podemos empacotar um filesystem inteiro para podermos usar-lo várias vezes, o que é comparável com as imagens do Docker. Usando a imagens do Ubuntu, por exemplo, conseguimos usar suas funcionalodades básicas atribuidas pelo seu filesystem, como o gerenciador de pacotes apt, uso da Kernel "containerizado" etc.

Com a imagem em mãos, podemos subir um container para realizar os procedimentos necessários, como rodar um servidor HTTP, realizar processos etc.

Cgroup

Como mencionado antes, o gerenciador de um container usa da funcionalidade do Cgroup para limitar o que um container consegue usar da máquina, como CPU e RAM, e da Kernel, como pids (Process ID).

Namespaces

Namespaces limita o que o container consegue ver, como Process ID externos, processos da Rede, entre outros. Funcionam também como uma forma de etiquetar processos que, quando criado e implementado em um container, cria um PID 1 onde seus "filhos" seguirão essa sequência.

Image Engine

Na image Engine, teremos a CLI que ficará responsável pela instalação, configuração e gerenciamento das imagens/filesystems que serão usados para criar um container.

./didactic-container image <cmd> <params>

Usage:
	didactic-container image [flags]
	didactic-container image [command]

Available Commands:
	del         del command will delete the specified image
	list        See list of all images you have download
	new         new command will download a image and insert in the database

Flags:
	-h, --help   help for image

Por que o SQLite?

Para melhor gerenciamento, usarei o SQLite para guardar informações das imagens e de outros futuros dados, então, para adiantar, já o deixarei configurado.

TODO

  • Preparar o ambiente para criar a Image Engine
  • Criar a conexão SQLite
  • Criar as funcionalidades para instalar e configurar as Imagens/Filesystems a serem usadas
  • Criar a funcionalidade para ver as imagens instaladas
  • Implementar os princípios SOLID no projeto
  • Remover o comando ./didactic-container init e transferi-lo para a função main
  • Fazer um fluxo onde inicializamos o BD somente uma vez e passamos um endereço para uma Struct com métodos para executar estruções.
  • Melhorar o código do comando ./didactic-container new
  • Configurar e implementar funções/métodos para receber um arquivo de configurações para as imagens.
  • Organizar a pasta models

FAQs

Package last updated on 07 Feb 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc