• Stars
    star
    110
  • Rank 316,770 (Top 7 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created over 5 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Simplistic container manager

conman - [the] container manager

The aim of the project is to implement yet another container manager. Primarily, for the sake of [self-]education. The conman project is heavily inspired by cri-o and the ultimate goal is to make conman CRI-compatible. This will allow deploying Kubernetes clusters with conman as a container runtime server.

Read more about the project in this article.

State of the project

Under active development. Not even close to 0.1.0.

Run it

So far the only tested platform is CentOS 7 with go version go1.16.6 linux/amd64.

While Docker is not needed for conman to work, docker command is expected on the dev host for tests to pass.

git clone https://github.com/iximiuz/conman.git
cd conman

# Build daemon and client
make bin/conmand
make bin/conmanctl

# Run daemon
sudo bin/conmand

# Prepare dev data
make test/data/rootfs_alpine

# Create containers
sudo bin/conmanctl container create --image test/data/rootfs_alpine/ cont1 -- sleep 100
sudo bin/conmanctl container create --image test/data/rootfs_alpine/ cont2 -- sleep 200

# List containers
sudo bin/conmanctl container list

# Start container 
sudo bin/conmanctl container start <container_id>

# Stop container 
sudo bin/conmanctl container stop <container_id>

# Request container status
sudo bin/conmanctl container status <container_id>

# Remove container 
sudo bin/conmanctl container remove <container_id>

Test it

# Unit (not really) tests
sudo PATH=/usr/local/bin:$PATH make testunit

# Functional tests
# install jq `yum install jq`
# install bats https://github.com/bats-core/bats-core 
sudo PATH=/usr/local/bin:$PATH make testfunctional

# OCI runtime shim integration tests
make testshimmy

TODO:

  • acceptance tests
  • shim
    • interactive containers (exec, stdin/stdout support)
    • PTY-controlled containers (eg. shell)
    • attach to a running container

More Repositories

1

cdebug

cdebug - a swiss army knife of container debugging
Go
1,310
star
2

client-go-examples

Collection of mini-programs demonstrating Kubernetes client-go usage.
Go
1,012
star
3

kexp

k'exp - Kubernetes Explorer
TypeScript
798
star
4

docker-to-linux

Make bootable Linux disk image (ab)using Docker
Makefile
658
star
5

awesome-container-tinkering

List of awesome tools to tinker with containers.
582
star
6

pq

Parse and Query log files as time series
Rust
377
star
7

labctl

iximiuz Labs control - start remote microVM playgrounds from the command line.
Go
181
star
8

flask-gevent-tutorial

How to use Flask with gevent (uWSGI and Gunicorn editions)
Python
93
star
9

simple-event-loop

Fully-functional Event Loop in 100 Lines of Python
Python
62
star
10

prometheus-playground

Prometheus Playground
Python
47
star
11

shimmy

Simplistic container runtime shim
Rust
39
star
12

ptyme

Simplest possible example of PTY usage
C
33
star
13

goimagego

goimagego - work with container images in Go (showcase)
Go
22
star
14

golife.c

Conway's Game of Life written in C and compiled to WebAssembly
C
20
star
15

envoy-playground

Container-based playground showing various capabilities of service proxy pattern.
Makefile
18
star
16

node-diskusage-ng

Get disk usage info in pure JS via OS built-in tools
JavaScript
17
star
17

wsmux

wsmux - a simple WebSocket tunnel server
Go
17
star
18

reapme

Playing with Linux processes termination in Rust
Rust
15
star
19

nim-2048

The 2048 game implementation in nim
Nim
14
star
20

producer-consumer-vis

Producer-consumer problem visualization
JavaScript
13
star
21

popen2

popen2() - bidirectional popen()
C
12
star
22

cancharts

Lightweight HTML5 canvas charts
JavaScript
11
star
23

readlines-ng

Tiny and fast async generator to read streams line by line
JavaScript
7
star
24

nom-parser-example

nom parser example
Rust
5
star
25

algorithms

Collection of different kind of algorithms
Scheme
4
star
26

todolist

A simple client-server TODO app
Go
2
star
27

multi_reader.rs

MultiReader - a composite reader implementation
Rust
2
star
28

echelon0

First echelon of logs analysis
Rust
2
star
29

js-itertools

Attempt to port Python's itertools to JavaScript
JavaScript
2
star
30

x86emu-py

Python
1
star
31

dotfiles

My dotfiles
Vim Script
1
star
32

CareersAnalyzer-web

CSS
1
star
33

node-express-ex-boilerplate

ExpressJS App Extended Boilerplate
JavaScript
1
star
34

CareersAnalyzer-grabber

Python
1
star