Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/0xc0d/vessel
A tiny tool to manage containers (inspired by docker).
https://github.com/0xc0d/vessel
cgroups containers docker golang linux namespace unionfs
Last synced: 7 days ago
JSON representation
A tiny tool to manage containers (inspired by docker).
- Host: GitHub
- URL: https://github.com/0xc0d/vessel
- Owner: 0xc0d
- Created: 2020-10-30T22:46:23.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2023-01-07T15:59:54.000Z (almost 2 years ago)
- Last Synced: 2024-10-30T04:10:06.168Z (15 days ago)
- Topics: cgroups, containers, docker, golang, linux, namespace, unionfs
- Language: Go
- Homepage: https://medium.com/swlh/build-containers-from-scratch-in-go-part-1-namespaces-c07d2291038b
- Size: 176 KB
- Stars: 53
- Watchers: 4
- Forks: 9
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# vessel
A tiny educational-purpose project to create containers, written in Go.It basically is a tiny version of docker, it uses neither [containerd](https://containerd.io/) nor [runc](https://github.com/opencontainers/runc). Only a set of the Linux features.
## Features
Vessel supports:
* __Control Groups__ for resource restriction (CPU, Memory, Swap, PIDs)
* __Namespace__ for global system resources isolation (Mount, UTS, Network, IPS, PID)
* __Union File System__ for branches to be overlaid in a single coherent file system. (OverlayFS)## Read more
Here is the list of blog posts I've written about vessel:1. [Build Containers From Scratch in Go (Part 1: Namespaces)](https://alijosie.medium.com/build-containers-from-scratch-in-go-part-1-namespaces-c07d2291038b)
2. To be continued...## Install
go get -u github.com/0xc0d/vessel
## UsageUsage:
vessel [command]
Available Commands:
exec Run a command inside a existing Container.
help Help about any command
images List local images
ps List Containers
run Run a command inside a new Container.## Examples
Run `/bin/sh` in `alpine:latest`
vessel run alpine /bin/sh
vessel run alpine # same as above due to alpine default commandRestart Nginx service inside a container with ID: 123456789123
vessel exec 1234567879123 systemctrl restart nginx
List running containersvessel ps
List local imagesvessel images
## Notice
vessel, obviously, is not a production ready container manager tool.