Skip to content

Potential improvements to the virtualization/containers lecture #202

Open
@MakisH

Description

@MakisH

Some notes from my impression from this year:

  • Reduce the motivational content, and especially the duplication between sections. I had the feeling that everyone was motivated enough, and we needed more time for details and hands-on.
  • Explain the difference between virtualization and emulation, and explain the compatibility between architectures, since this is now more relevant than in the "almost everyone runs x86" years. This raised a lot of discussion this year. We could also show a concrete demo with QEMU.
  • Discuss KVM as an alternative to VirtualBox (potentially have a demo available)
  • Discuss concrete steps for minimizing the size of the published images (e.g., by running apt clean after apt update && apt install).
  • Put more emphasis on Singularity. I had the impression that students generally knew about Docker, while Singularity is quite neat.
  • Talk about Podman equally as much as Docker (or even default to Podman, in the same way as we default to Apptainer for talking about Singularity).
  • Discuss integration of Docker with VSCode and other tools (I quickly showed this at the end of the exercise).
  • Add a comparison table between solutions.
  • For the exercise, find, test, and suggest concrete solutions for Apple Silicon. This year, we had five students affected by this. What worked in the end was VMWare Fusion with Ubuntu images build for ARM. This worked with Vagrant as well (but I am not sure if the suggested bento/ubuntu-24.04 box worked in the end).

I also found it useful to have an overview of commands on the blackboard:

# Overview

## Vagrant

vagrant init bento/ubuntu-24.04

vagrant up
vagrant provision
vagrant ssh

vagrant global-status
vagrant box list

## Docker

docker pull ubuntu:24.04
docker run -it ubuntu:24.04
docker exec -it ubuntu:24.04 /bin/bash

docker image ls
docker ps -a

## Singularity

apptainer pull docker://ubuntu:24.04

apptainer shell ubuntu_24.04.sif
./ubuntu_24.04.sif
apptainer exec ubuntu_24.04.sif /bin/bash

Any feedback by students is welcome here as well.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions