rust-lxc

Crates.iorust-lxc
lib.rsrust-lxc
version1.0.0
created_at2025-05-09 12:31:31.980254+00
updated_at2025-05-09 12:31:31.980254+00
description`rust-lxc` is a Rust bindings for LXC
homepagehttps://github.com/ta2ozg/rust-lxc
repositoryhttps://github.com/ta2ozg/rust-lxc
max_upload_size
id1666953
size24,696
Ozgur Karatas (ta2ozg)

documentation

https://docs.rs/rust-lxc

README

🦀 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

[dependencies]
rust-lxc = { git = "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

cargo test

1. Clone the project

git clone https://github.com/ta2ozg/rust-lxc.git
cd rust-lxc

2. Install dependencies

To install the dependencies, run:

cargo build

3. Use the commands

After building the project, you can manage containers with the following commands:

  • Create a container:
cargo run -- create --name mycontainer --template download
  • Start a container:
cargo run -- start --name mycontainer
  • Stop a container:
cargo run -- stop --name mycontainer
  • Delete a container:
cargo run -- delete --name mycontainer
  • List containers:
cargo run -- ls
  • Shutdown a container:
cargo run -- shutdown --name mycontainer

Understanding the Code

File Structure

  • lib.rs: This file contains the core logic for interacting with liblxc. FFI is used to interface with the liblxc library and container operations are defined here.
  • cli.rs: This file defines the CLI using clap. 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.

Commit count: 10

cargo fmt