Virtualization and Containers

Brendan Kidwell

December 11, 2025

Copyright 2025 Brendan Kidwell
Creative Commons Attribution-ShareAlike 4.0 License
Please share any recordings of this presentation.

Presentation notes:
go.glump.net/virtualization

Reading my slides online?
Hit [S] to open Speaker Notes in another window.
Then [PgUp] and [PgDn] to move through the deck.

Intro

Brendan Kidwell

glump.net

Fediverse:
@progo@boop.city

Matrix:
@progo:matrix.glump.net

Libera.chat IRC:
bkidwell

https://commons.wikimedia.org/wiki/File:Cpc464.computer.750pix.jpg
Arpingstone, Public domain, via Wikimedia Commons
https://commons.wikimedia.org/wiki/File:Neighbors_across_the_fence_-_Mid-City_New_Orleans.jpg
Bart Everson, CC BY 2.0 https://creativecommons.org/licenses/by/2.0, via Wikimedia Commons

History

https://commons.wikimedia.org/wiki/File:Punched_card_program_deck.agr.jpg
ArnoldReinhold, CC BY-SA 3.0 https://creativecommons.org/licenses/by-sa/3.0, via Wikimedia Commons

1960s

CTSS: Compatible Time-Sharing System

  • First multi-user system
  • Multiple simultaneous sessions and programs sharing same CPU and memory

1970s

IBM System/370 platform and VM/CMS operating system

First commercially available mainframe with full hardware virtualization

https://commons.wikimedia.org/wiki/File:Ordinateurs_centraux_348-3-001-2_(edit).jpg
Laval University, CC BY-SA 4.0 https://creativecommons.org/licenses/by-sa/4.0, via Wikimedia Commons

Hardware Virtualization

Physical Computer:

  • I/O devices
  • storage devices
  • CPU
  • operating system
  • applications

Virtual Machine:

  • Hypervisor
    • virtual I/O devices
    • virtual storage devices
    • CPU (in a sandbox mode)
    • operating system
    • applications

1980s, 1990s

Single-purpose “mini-computers” and single-user personal computers get cheaper.

No virtualization support in x86 and 68000 CPUs commoonly used on desktop computers.

Late 1990s, 2000s

OS-level virtualization becomes common.

  • FreeBSD Jails (2000)
  • Solaris Zones (2004)
  • OpenVZ for Linux (2005)
  • Linux Containers (LXC) (2008)
  • Proxmox Virtual Environment for Linux (2008)

Late 1990s, 2000s

Virtualization hits the enterise (datacenters)
and the desktop (for software developers).

  • VMWare Workstation (1999)
  • VMWare ESX (2001)
  • Connectix Microsoft Virtual PC (2003)

2000s, 2010s

Amazon popularizes “cloud computing” with their Amazon Web Services

  • Amazon AWS (2006)
    • EC2 virtual machines as a service
  • Google App Engine (2008)
  • Microsft Azure (2010)
  • Oracle Cloud (2016 — late to the party)

A wave of migration from “on-premises” enterprise IT services to “cloud”.

Cloud Computing

In-House Enterprise Data-Center:

  • Your hardware.
  • Your disks.
  • Your data.
  • Your maintenance and security.

Cloud Computing:

  • “Someone else’s computer”
  • Outsourcing:
    • Hardware maintenance.
    • Backups.
    • Software configuration (in some cases).
    • Blame when things go wrong.
  • You have no control when the vendor breaks something.

2010s

Docker hits the scene. (2013)

  • “Same software environment on the developer’s laptop and the production server.”
  • No more “well, it worked on my machine”.
  • Ship a stripped down OS and programs for a service as a single package that runs in OS-level virtualization.
  • Simple deployment: pull changes, restart container.

Recap

Separate Accounts Virtualization Containers
user data separate directories, same system separated separated
operating system and applications mostly shared across all users separated separated, but OS kernel is shared
security note secure: Administrator account can access data of all users isolated:
no direct access across VMs
not usually considered strongly secure
performance “bare metal” some overhead faster than hardware virtualization
typical use case desktop / laptop computer datacenter:
Customer gets 1 or more VMs of their own

software development
server software deployment inside a VM

software development

Definitions

Hypervisor
The program that controls the real hardware and provides virutal hardware as a software servide to running Virtual Machines
Host OS
The root-level operating system that’s running the Hypervisor
Guest OS
The OS running inside the VM sandbox
Windows and Linux fully support being a Guest OS. MacOS is more fiddly.

Try This at Home

Windows Subsystem for Linux

Guide for setting up WSL, from It’s Foss:
https://itsfoss.com/wsl/

  • Supported on all current editions of Windows.
  • You need to make sure you enable Virtualization (Intel VT-x or AMD-V features of your CPU) in your PC’s hardware setup screen.

Tips:

  • Backup. I tried to run WSL / Hyper-V inside a VM, and I ended up temporarily bricking the VM.

VirtualBox

  • https://www.virtualbox.org/
  • Free open source software.
  • Runs on Windows, Linux, and MacOS
  • Point-and-click interface for creating and managing VMs.

Tips:

  • I had trouble getting Hyper-V and VirtualBox working side-by-side. You may have to uninstall Hyper-V on your Windows Host.

VirtualBox Entrapment Warning

  • VirtualBox base system is free open source software.
  • The optioanl VirtualBox Extension Pack is Lawsuit-ware.
    • Provides full USB; RDP; disk image encryption; PXE boot.
    • Free to download and “evaluate”.
    • If you download it from an enterprise network (campus, business, etc.) Oracle will come to your sysadmins and demand money, and you’ll never even find out. They will make your enterprise pay.

To be extra safe:

  • Use Tor for all access to Oracle’s web site.
  • Do not download the Extension Pack unless you are aware of the risks and you need to use it.

VMWare Workstation

Virtual Machine Manager

virt-manager / KVM / (also LXC containers)

Docker

  • https://www.docker.com/
  • Free open source software.
  • Also try PodMan GUI manager for docker https://podman.io/
  • Containers — not Virtual Machines
  • Only runs on a Linux Host OS.
  • Developers with Windows and Mac computers:
    Create a Linux virtual machine, and then run Docker inside that VM.

Very quick “try out a package” cycle:

> docker search dokuwiki
# [get a result; read its README online...]
> docker run -p 8080:8080 --user 1000:1000 \
    -v /path/to/storage:/storage dokuwiki/dokuwiki:stable
> firefox http://localhost:8080

Proxmox VE