A container image builder tool for OCI (distrobox/toolbox, also podman/docker)

Overview

Distrobox Boost

standard-readme compliant

A container image builder tool for Open Container Initiative (distrobox/toolbox, also podman/docker).

Distrobox is good enough in running softwore, but compare to Package Manager such as APT, pacman, etc, it miss a faster, agile and Cloud Native way to use Open Container Initiative (OCI).

Table of Contents

Background

When I tried to use distrobox, it's not because of lacking packages, most users can package an app if they want, it's not that hard. I used distrobox as my build environment, such as building mono in RISC-V.

But as you know, the init for distrobox is too slow. I wasted a lot of time waiting for distrobox to tell me everything is ready. Sometimes distrobox init fails when the network is bad or wrong package name, etc.

So I decided to code this tool to save my time and help more users use distrobox and share their packages. Because I know many packages are only made for specific distros, and some distros like Gentoo, Void Linux, don't have many devs to package apps. I want to use this amazing distro as my host system, but also need some must-have apps.

Why I choice Rust but not bash:

  1. Easy write tests
  2. No runtime dependence issues
  3. faster!

The goals of this tool are:

  1. Build images the right way for distrobox.
  2. Run distrobox easily.
  3. Manage distrobox containers easily.
  4. Manage and share containers easily and properly.
  5. Update packages in containers quickly and easily.
  6. You tell me.

Install

From source

$ git clone [email protected]:xz-dev/distrobox-boost.git
$ cd distrobox-boost
$ cargo build --release
$ ls target/release/distrobox-boost

From OBS

home:xz:distrobox-boost

From GitHub Release

TODO

From Docker Hub

TODO

Usage

Replace the builder of distrobox-assemble

  1. You need an ini file for distrobox-assemble like tests/files/example.ini (more info in distrobox README)

  2. Run command

    $ target/release/distrobox-boost --input ./tests/files/example.ini --output ./tests/files/example_new.ini
  3. distrobox-assemble

    $ distrobox-assemble --file tests/files/example_new.ini create
    $ distrobox list

Build separate file for distrobox-assemble

  1. You need an ini file for distrobox-assemble like tests/files/example.ini (more info in distrobox README)

  2. Run command

    $ target/release/distrobox-boost --input ./tests/files/example.ini --output-dir ./tests/files/example_out/
  3. distrobox-assemble

    $ distrobox-assemble --file tests/files/example/arch.ini create
    $ distrobox list

Create distrobox image by command

  • Run the package like nix-shell
    $ distrobox-boost fish -c 'ls -la'
  • Run command in the package's container like nix-env
    $ distrobox-boost fish --run bash -c "ls -la"

Pin/Unpin image to avoid clean

podman system prune -a and clean all your container data?

$ target/release/distrobox-boost --input ./tests/files/example.ini --pin
$ target/release/distrobox-boost --input ./tests/files/example.ini --unpin
$ target/release/distrobox-boost --input ./tests/files/example.ini --output ./tests/files/example_new.ini --pin # It also can use with other args

Roadmap

  • Build image from Dockerfile
  • Create distrobox image by command args
  • Update packages in image
  • Record packages in container
  • Backup/Restore from disk for sharing your container
  • Full tests

Contributing

Feel free to dive in! Open issues or PRs. Before you code, please discuss in issues first, because I may already be working on something without you knowing. I don't want to waste your time.

Donation

License

MIT

Star History

Star History Chart

You might also like...
The joker_query is a cute query builder, with Joker can implement most complex queries with sugar syntax
The joker_query is a cute query builder, with Joker can implement most complex queries with sugar syntax

joker_query The joker_query is most sugared query builder of Rust, with joker_query can implement most complex queries with sugar syntax Features βˆ’ (O

Advent of Code 2021, also an attempt to practice a bit of Rust.

Advent of Code 2021 Advent of Code 2021 (my first one!), also an attempt to practice a bit of Rust. Running (Assuming that the respective inputs are i

Simple macros to write colored and formatted text to a terminal. Based on `termcolor`, thus also cross-platform.
Simple macros to write colored and formatted text to a terminal. Based on `termcolor`, thus also cross-platform.

Bunt: simple macro-based terminal colors and styles bunt offers macros to easily print colored and formatted text to a terminal. It is just a convenie

Owned container for dynamically-sized types backed by inline memory

sized-dst This crate provides Dst, an owned container for dynamically-sized types (DSTs) that's backed by inline memory. The main use-case is owned tr

A simple tui to view & control docker containers
A simple tui to view & control docker containers

oxker A simple tui to view & control docker containers Built in Rust, making heavy use of tui-rs & Bollard Download & install See releases download &

A CLI tool to find the dominant colours in an image 🎨
A CLI tool to find the dominant colours in an image 🎨

dominant_colours This is a command-line tool for finding the dominant colours of an image. It prints their hex codes to the terminal, along with a pre

A command-line tool aiming to upload the local image used in your markdown file to the GitHub repo and replace the local file path with the returned URL.
A command-line tool aiming to upload the local image used in your markdown file to the GitHub repo and replace the local file path with the returned URL.

Pup A command line tool aiming to upload the local image used in your markdown file to the GitHub repo and replace the local file path with the return

CLI tool to convert image files.

🐟 F1sh CLI tool to convert image files. πŸ–ΌοΈ Supported formats File Supported AviF βœ… BMP βœ… DDS βœ… Farbfeld βœ… GIF βœ… HEIF ❌ ICO βœ… JPEG βœ… OpenEXR βœ… PNG βœ…

Command-Line program that takes images and produces the copy of the image with a thin frame and palette made of the 10 most frequent colors.
Command-Line program that takes images and produces the copy of the image with a thin frame and palette made of the 10 most frequent colors.

paleatra v.0.0.1 Command-Line program that takes an image and produces the copy of the image with a thin frame and palette made of the 10 most frequen

Owner
xz-dev
If my work is help you, pls donate to help me, I have no bread and butter.
xz-dev
Run VM disk images using Podman / Docker / Kubernetes.

The crun-vm OCI Runtime crun-vm is an OCI Runtime that enables Podman, Docker, and Kubernetes to run QEMU-compatible Virtual Machine (VM) images. This

Containers 156 Nov 21, 2024
Cloud Native Buildpack that builds an OCI image with Ollama and a large language model.

Ollama Cloud Native Buildpack This buildpack builds an OCI image with Ollama and a large language model. Configure your model by an Ollama Modelfile o

Manuel Fuchs 3 Mar 19, 2024
A command-line tool and Docker image to automatically backup Git repositories from GitHub or anywhere

A command-line tool and Docker image to automatically backup Git repositories from GitHub or anywhere

Jake Wharton 256 Dec 27, 2022
Demo app duplicated in 5 languages (Go/JavaScript/Python/Ruby/Rust) showing how to go from source code to container image using melange+apko

hello-melange-apko ?? This repo contains an example app duplicated across 5 languages showing how to: Package source code into APKs using melange Buil

Chainguard 16 Jan 23, 2023
Ion - a CLI toolbox for Julia developers

Ion - a CLI toolbox for Julia developers Ion is a CLI toolbox for Julia developer. It provides a set of tools to help you develop Julia packages. Inst

Rogerluo 38 Mar 8, 2023
A command-line tool for re-packaging an epub that has been unzipped. Can also be used as a library.

?? zaino A command-line tool for re-packaging an epub that has been unzipped. Can also be used as a library. Installation To use zaino as a library, a

Zachary Golba 3 Aug 17, 2023
Save image from your clipboard πŸ“‹ as an image file directly from your command line! πŸ”₯

Clpy ?? Save copied image from clipboard as an image file directly from your command line! Note It works only on windows as of now. I'll be adding sup

Piyush Suthar 13 Nov 28, 2022
Conference Monitoring Project based on Image Recognition that uses Rust Language and AWS Rekognition service to get the level of image similarity.

Conference Monitoring System based on Image Recognition in Rust This is a Conference Monitoring Project based on Image Recognition that uses Rust Lang

Pankaj Chaudhary 6 Dec 18, 2022
Manage lightweight VMs created from OCI images

krunvm krunvm is a CLI-based utility for managing lightweight VMs created from OCI images, using libkrun and buildah. Features Minimal footprint Fast

Containers 1.1k Jan 6, 2023
AUR external package builder

AUR Build Server Goal This project aims to provide an external package making server based on any PKGBUILD based project. Right now it pulls AUR packa

SeΓ―fane Idouchach 2 Sep 11, 2022