bmc is a lightweight container runtime environment based on runc. It allows you to run Docker images in tar format without using dockerd. The main goal of this project is to provide convenience for offline software installation and runtime, serving the needs of both development and operations.
- Runs Docker images in tar format without using dockerd.
- Supports custom environment variables and data directories.
- Based on Docker and Linux namespace, it doesn't require strict network isolation.
- Lightweight images and small runtime environment, with advantages in resource consumption and image size.
- Install dependencies: https://github.com/exfly/bmc/releases
mv bmc-* /bin/bmc && chmod +x /bin/bmc
docker save -o dockerimg.tar alpine:edge
bmc run --build-rootfs -f /path/to/dockerimg.tar --mount "type=bind,source=$(pwd)/snap,target=/host"
- Implement program features.
- Support loading custom environment variables.
- support bind mount data directory.
- Support CI testing.
- Support arm64.
- Refactor spec parsing using https://github.com/opencontainers/runtime-spec/specs-go.
- Refactor runc execution using https://0xcf9.org/2021/06/22/embed-and-execute-from-memory-with-golang/.
Contributions are welcome through pull requests or issues. If you find a bug, please open a new issue. If you want to add new features or fix issues, please fork the project and submit a pull request.
This project is licensed under the Apache License. See the LICENSE file for details.