All Projects → queer → squish

queer / squish

Licence: other
An experimental, rootless, Alpine-based container runtime

Programming Languages

rust
11053 projects
shell
77523 projects

Projects that are alternatives of or similar to squish

Huddy
Huddy = Hugo + Caddy docker container
Stars: ✭ 14 (-17.65%)
Mutual labels:  container
ecs-gen
docker-gen for AWS ECS
Stars: ✭ 46 (+170.59%)
Mutual labels:  container
docker-suricata
A Suricata Docker image.
Stars: ✭ 120 (+605.88%)
Mutual labels:  container
docker-postgres-windows
No description or website provided.
Stars: ✭ 19 (+11.76%)
Mutual labels:  container
easy-container
A small PHP dependency injection container from Laravel Container, support PHP 5.3
Stars: ✭ 32 (+88.24%)
Mutual labels:  container
easy-css-layout
Easy css layout
Stars: ✭ 117 (+588.24%)
Mutual labels:  container
singularityhub.github.io
Container tools for scientific computing! Docs at https://singularityhub.github.io/singularityhub-docs
Stars: ✭ 68 (+300%)
Mutual labels:  container
php7-alpine
Docker container for PHP 7 in Alpine Linux, with almost all extensions that you may need
Stars: ✭ 20 (+17.65%)
Mutual labels:  container
ultimate-kubernetes-bootcamp
Ultimate Kubernetes Bootcamp
Stars: ✭ 43 (+152.94%)
Mutual labels:  container
restme
Template to bootstrap a fully functional, multi-region, REST service on GCP with a developer release pipeline.
Stars: ✭ 19 (+11.76%)
Mutual labels:  container
coreos-gpu-installer
Scripts to build and use a container to install GPU drivers on CoreOS Container Linux
Stars: ✭ 21 (+23.53%)
Mutual labels:  container
render
A simple web service that renders a Blender 3D scene with custom text.
Stars: ✭ 27 (+58.82%)
Mutual labels:  container
dingo
Generated dependency injection containers in go (golang)
Stars: ✭ 75 (+341.18%)
Mutual labels:  container
docker-garby
Just another Docker maintenance script, managing garbage collection of Docker containers and images.
Stars: ✭ 36 (+111.76%)
Mutual labels:  container
daspanel
Free, open-source, server agnostic, self-hosted web hosting control panel using Docker
Stars: ✭ 71 (+317.65%)
Mutual labels:  container
github-ci
An example GitHub Action (CI) to build a Singularity container
Stars: ✭ 46 (+170.59%)
Mutual labels:  container
nordvpn
NordVpn Docker Client
Stars: ✭ 475 (+2694.12%)
Mutual labels:  container
cgroupfs
Cgroupfs provides an emulated /proc/meminfo, /proc/cpuinfo... for containers
Stars: ✭ 28 (+64.71%)
Mutual labels:  container
docker-varnish
Varnish docker image used within EMGAG environments
Stars: ✭ 25 (+47.06%)
Mutual labels:  container
nginx-container
Nginx high-performance HTTP server and reverse proxy container images based on Red Hat Software Collections and intended for OpenShift and general usage. Users can choose between Red Hat Enterprise Linux, Fedora, and CentOS based images.
Stars: ✭ 77 (+352.94%)
Mutual labels:  container

squish

squish is a novel rootless-only container runtime. The name is never capitalised, so if it were to come at the start of a sentence, it would still be written squish.

Why?

squish was born out of frustration with existing container runtimes. They all have their drawbacks (rootful, lack of port rebinds, cache-unfriendliness, slow container starts, ...) that lead to usage thereof being a frustrating experience at best. squish attempts to address these shortcomings.

Preliminary testing shows that squish can get a viable Alpine-rootfs container up in ~5ms. This is an initial figure, and will change over time.

Things that haven't been implemented but are planned

squish also avoids the typical OCI-style container images. The goal of squish is that the only "image" you deploy is a binary, and a manifest with the list of SDKs it uses. At container runtime, the various SDKs are bind-mounted into the container dynamically. Both the rootfs and all SDK layers are mounted read-only.

Roadmap

Feature Description State
Alpine Read-only Alpine rootfs ✔️
Networking slirp4netns networking + port binds ✔️
Mounts Bind-mount files and directories ro and rw ✔️
Rootless Containers without root ✔️
Container networking Inter-container networking TODO
Cgroups Resource limitations etc TODO
Systemd cgroup driver Set up cgroups via systemd TODO
Layer downloads Download layers via HTTP TODO
Seccomp Syscall filtering TODO
Dynamic port rebinds (Re)bind container ports at runtime TODO

What won't be implemented?

  • Persistence of containers between daemon reboots
  • Getting a shell in a container

Local development

  1. Set up your environment by running ./setup.sh
  2. Run the daemon with env RUST_BACKTRACE=1 RUST_LOG=debug cargo run -p daemon
  3. Create a container with cargo run -p cli -- create test/squishfiles/default.toml
  4. You did it! Read the cli source to learn more commands

Testing

squish currently only has e2e tests. You can run them by running ./test/test-e2e.sh.

Layers and binaries and images and whatnot

squish doesn't have OCI-style container images. Since what actually runs is a bunch of bind-mounted-together SDKs, your "image" that you push is just a binary (or tarball, or ...). When actually running a container, you specify its layer names + tags in your squishfile.toml, as well as optional run + env + port sections -- and the daemon can put all of it together to figure out what layers are needed and what command to run. This may seem a bit counter-intuitive at first, but it's useful for ex. adding a custom debug layer to containers at creation time, ensuring you have the same tools present in a container no matter what source layers make it up.

Where did the name come from?

The idea started out as making something like Flatpak for servers -- although squish has significantly diverged since then -- and so the original working name was "squishpak," which eventually shortened into "squish."

Misc

http-asm: https://github.com/poletaevvlad/http-asm

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].