firecracker-init-lab
Build a microVM from a container image
Many of the examples you'll find are broken due to changes in Firecracker 1.0 - the official quickstart guide doesn't cover the most interesting thing - working Internet access - or extracting a filesystem from a container. This lab extends the official quickstart so that you can explore what an init process does, and add networking.
Pre-reqs
- A bare-metal Linux host - where can you get bare metal?
- Or a VM that supports nested virtualisation such as on DigitalOcean or GCP.
- Docker installed
Browse:
- Go init process
- Makefile
- boot.sh - commands to start MicroVM
- Dockerfile - for building the root filesystem
Usage
Download and install Firecracker to /usr/local/bin/
Or, alternatively, Arkade can do this for you with:
curl -SLs https://get.arkade.dev | sudo sh
sudo arkade system install firecracker
Create ftap0 and masquerading with iptables:
./setup-networking.sh
Download the quickstart Kernel:
make kernel
Make the init process binary, and package it into a container, extract the container into a rootfs image:
make all
In one terminal, start firecracker:
make start
In another, instruct it to boot the rootsfs and Kernel:
make boot
Play around in the first terminal and explore the system:
free -m
cat /proc/cpuinfo
ip addr
ip route
ping -c1 1.1.1.1
echo "nameserver 1.1.1.1" > /etc/resolv.conf
ping -c1 google.com
apk add --no-cache curl
curl -i https://inlets.dev
Running on a Raspberry Pi
Edit Makefile, and change arch
to aarch64
export arch="x86_64"
Live-event - A cracking time with Richard Case of Weaveworks
Richard Case will join me as we explain to you why we're so excited about Firecracker, what use-cases we see and try to show you a little of what can be done with it. Richard's been at the sharp end of this technology for months, and is working on a cutting edge bare-metal Kubernetes project called Liquid Metal.
You'll hear more about it on Friday lunch at 12:00pm BST.
If you can't make it live, then you'll be able to jump onto the replay with your morning coffee.