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