🦀 rust-lxc
rust-lxc is a Rust bindings for LXC.
Why Rust Bindings for liblxc?
LXC is the well-known and heavily tested low-level Linux container runtime. It is in active development since 2008 and has proven itself in critical production environments world-wide. Some of its core contributors are the same people that helped to implement various well-known containerization features inside the Linux kernel.
This package implements Rust bindings for the LXC C API (liblxc).
Features
With rust-lxc, you can perform the following operations:
- Create a container (
create) - Start a container (
start) - Stop a container (
stop) - Delete a container (
delete) - List all containers (
ls) - Shutdown a container (
shutdown)
Add to your Cargo.toml
[]
= { = "https://github.com/ta2ozg/rust-lxc" }
Dependencies
- Rust 2024 Edition
clap(for the CLI)anyhow(for error handling)liblxc(C-based library for LXC containers)
Testing
1. Clone the project
2. Install dependencies
To install the dependencies, run:
3. Use the commands
After building the project, you can manage containers with the following commands:
- Create a container:
- Start a container:
- Stop a container:
- Delete a container:
- List containers:
- Shutdown a container:
Understanding the Code
File Structure
lib.rs: This file contains the core logic for interacting withliblxc. FFI is used to interface with theliblxclibrary and container operations are defined here.cli.rs: This file defines the CLI usingclap. Commands and arguments are parsed here.lxc.rs: All operations related to LXC containers are defined in this file. Creating, starting, stopping, and deleting containers happen here.main.rs: This is the entry point of the program. It processes the CLI commands and calls the appropriate functions.
Commands
The following commands are available in this project:
create: Creates a new LXC container.delete: Deletes an existing container.start: Starts a container.stop: Stops a container.ls: Lists all available containers.shutdown: Shuts down a container.
Contributing
PRs, ideas and bug reports are welcome.
Want to extend the library or implement more endpoints? Let’s build it together!
📄 License
Licensed under the MIT License.
This project is licensed under the MIT License. See the LICENSE file for more information.