/rust-vmm-container

Container with all dependencies required for running rust-vmm crates integration tests.

Primary LanguageShellApache License 2.0Apache-2.0

rust-vmm-container

rustvmm/dev is a container with all dependencies used for running rust-vmm integration and performance tests.

The container is available on Docker Hub and has support for x86_64 and aarch64 platforms.

For the latest available tag, please check the rustvmm/dev builds available on Docker Hub. Alternatively, you can check out the Bash expression below.

DOCKERHUB="https://registry.hub.docker.com/v1/repositories/rustvmm/dev/tags"

VERSION=$(wget -c -q $DOCKERHUB -O -  \
  | tr -d '[]" '                      \
  | tr '}' '\n'                       \
  | awk -F: '{print $3}'              \
  | grep -v "_"                       \
  | cut -c 2-                         \
  | sort -n                           \
  | tail -1                           )

docker pull rustvmm/dev:$VERSION

Depending on which platform you're running the command from, docker will pull either rustvmm/dev:vX_aarch64 or rustvmm/dev:vX_x86_64.

For now rust is installed only for the root user.

Using the Container

The container is currently used for running the integration tests for the kvm-ioctls crate.

Example of running cargo build on the kvm-ioctls crate:

> git clone git@github.com:rust-vmm/kvm-ioctls.git
> cd kvm-ioctls/
> docker run --volume $(pwd):/kvm-ioctls \
         rustvmm/dev:v15 \
         /bin/bash -c "cd /kvm-ioctls && cargo build --release"
 Downloading crates ...
  Downloaded libc v0.2.48
  Downloaded kvm-bindings v0.1.1
   Compiling libc v0.2.48
   Compiling kvm-bindings v0.1.1
   Compiling kvm-ioctls v0.0.1 (/kvm-ioctls)
    Finished release [optimized] target(s) in 5.63s

Available Tools

The container currently has the Rust toolchain version 1.58.1 and Python3.8.

Python packages:

Cargo plugins:

Rust targets on x86_64:

  • x86_64-unknown-linux-gnu
  • x86_64-unknown-linux-musl

Rust targets on aarch64:

  • aarch64-unknown-linux-gnu
  • aarch64-unknown-linux-musl

Miscellaneous utilities:

  • bc
  • bison
  • cpio
  • debootstrap
  • flex
  • git
  • wget
  • shellcheck

Publishing a New Version

On an aarch64 platform:

> cd rust-vmm-dev-container
> ./docker.sh build
> ./docker.sh publish

You will need to redo all steps on an x86_64 platform so the containers are kept in sync (same package versions on both x86_64 and aarch64).

Now that the tags v4_x86_64 and v4_aarch64 are pushed to Docker Hub, we can go ahead and also create a new version tag that points to these two builds using docker manifest.

./docker.sh manifest

If it is the first time you are creating a docker manifest, most likely it will fail with: docker manifest is only supported when experimental cli features are enabled. Checkout this article to understand why and how to fix it.