rust-lxc 1.0.0

`rust-lxc` is a Rust bindings for LXC
Documentation
#  🦀 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`

```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

```bash
cargo test
```

---

### 1. Clone the project

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

### 2. Install dependencies

To install the dependencies, run:

```bash
cargo build
```

### 3. Use the commands

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

- **Create a container:**

```bash
cargo run -- create --name mycontainer --template download
```

- **Start a container:**

```bash
cargo run -- start --name mycontainer
```

- **Stop a container:**

```bash
cargo run -- stop --name mycontainer
```

- **Delete a container:**

```bash
cargo run -- delete --name mycontainer
```

- **List containers:**

```bash
cargo run -- ls
```

- **Shutdown a container:**

```bash
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.