SlideShare a Scribd company logo
Unikernels and Docker: from
Revolution to Evolution
Mindy Preston
Mindy Preston
Member of Technical Staff at Docker, tweets @mindypreston
 
2
A maintainer of
•  the MirageOS unikernel
•  VPNKit, part of Docker4Mac and Docker4Windows
3
4
Some Definitions
•   "docker": you're all probably pretty solid on this :)
•   "unikernels": artifacts representing a set of software which runs in a
single address space, with no distinction between kernel and userspace
code.
•   "library operating system": a build system which can link a group of
libraries representing traditional OS functions with an application to
produce a unikernel.
5
Artifact
6
"nobody cares about containers unikernels"
•  something which allows the execution of general application code
•  something easily described completely (you can enumerate the things it
needs)
•  something low-overhead (small in terms of binary size, cpu/mem, or
some othe resource consumption)
7
Artifact is Code
application code (= source)
(intepreter & dependencies) + external app dependencies
OS + shared libraries
computer
•  a very nice way to get runtime errors
8
Artifact is Instructions
application code |> compiler & dependencies |> binary
OS + shared libraries
computer
•  shared libraries are an opportunity for chaos
•  few guarantees on build environment
9
Artifact is Instructions + (some)
environment
app code + shared libs |> compiler + deps |> static binary
OS
computer
•  resource consumption cost
•  build environment is still not necessarily reproducible
10
Artifact is Code + Build Spec
app code + base img + deps + config |> container builder |> image
container runner
OS
computer
•  [ Dockerfile ] for a more complete and repeatable description
•  (although reproducibility can be sabotaged: RUN apk add)
•  apps that need to tune system parameters (privileged mode)
11
Artifact is Code + OS
app code + app deps + OS deps |> unikernel builder |> unikernel
unikernel runner
computer
•  library operating systems: system dependencies on the same conceptual
level as application dependencies
•  unikernels: the artifact we generate, which doesn't need to run on a
traditional OS
•  note what's missing: build environment isn't necessarily well-specified
12
build unikernels in
containers
13
to follow along...
get started with docker pull ocaml/opam:ubuntu or your OS of
choice
you can also try docker pull halvm/base to give the Haskell
unikernel project HaLVM a shot
14
"OS
Dependencies"
15
what has your OS done for you lately?
•  timekeeping
•  networking
•  entropy/randomness
•  storage
•  logs
•  I/O: keyboard, mouse, video, sound, pancake printer, light-up bracelet...
16
sidebar: rump
•  twiddling knobs in the kernel is tough
•  it's way easier if you can test things in isolation
17
libraries in your
favorite language
18
you too are a systems programmer!
•  most unikernel projects supply implementations for things like
networking
•  some are swappable (including MirageOS - make the types agree and
you're good to go)
•  you can write your own!
19
reject the default reality and substitute your
own
•  common failure points for applications are "external" problems, which the
OS notices
•  you can stress your application easily, by providing libraries that always
have edge cases occurring
20
fail gloriously,loudly,often
•  network interfaces that always have new packets waiting
•  random number generators that read from a static list
•  entropy sources that always block
•  filesystems that are always full
•  block devices that are always busy
•  DNS that always sends you to
supertrustworthy.plzgivemeyourcreds.com
21
OS libraries in your applications
•  Docker4Mac and Docker4Windows hosts can have complicated
networking situations
•  VPNs, custom DNS, mandatory proxies
•  the Mac or Windows machine is configured to do the right thing — don't
break that!
•  if nc google.com 80 works from the terminal, it should work from a
container
•  use a unikernel networking library to reimplement an old solution to this:
22
VPNKit
23
VPNKit
•  vpnkit is a piece of a library operating system, on your machine, right
now, as part of docker
•  let's use unikernels to make the whole stack work better!
24
something more dramatic
run a unikernel with docker tools* - Martin Lucina's unikernel-runner
* (given direct access to /dev/kvm on the host)
25
where we're going
•  we'll have done a good job when unikernels Just Work
•  it should be just as easy to build, ship, run, and scale a unikernel as a
process or a container
•  sometimes you'll want a unikernel and sometimes you won't — we want
to let you do the right thing no matter what
26
Unikernel is Just
Another Target
27
You Can Make It Happen!
•  VPNKit - help improve libraries in Docker4Mac/Win
•  HyperKit - dig into the D4M/W hypervisor!
•  unikernel.org - find or list your favorite unikernel project!
•  MirageOS summer hack retreat - join us face-to-face to improve
MirageOS!
28
special thanks to...
•  my rad fellow Dockerites
•  the fantastic contributors to Docker, MirageOS, HaLVM, Rump, and myriad
other unikernel projects
•  Justin Cormack for last minute slide assistance and real good emceeing
29
Questions?
•  @mindypreston
•  mindy.preston@docker.com
•   docker run -d -P mindypreston/dockercon2016
 
30

More Related Content

PPTX
Monitoring docker container and dockerized applications
PDF
OSCON: System software goes weird
PDF
DockerCon US 2016 - Extending Docker With APIs, Drivers, and Plugins
PDF
Getting Deep on Orchestration: APIs, Actors, and Abstractions in a Distribute...
PPTX
Moving Legacy Applications to Docker by Josh Ellithorpe, Apcera
PDF
Sharding Containers: Make Go Apps Computer-Friendly Again by Andrey Sibiryov
PDF
Docker 1.11 Meetup: Containerd and runc, by Arnaud Porterie and Michael Crosby
PPTX
Docker for Ops: Docker Networking Deep Dive, Considerations and Troubleshooti...
Monitoring docker container and dockerized applications
OSCON: System software goes weird
DockerCon US 2016 - Extending Docker With APIs, Drivers, and Plugins
Getting Deep on Orchestration: APIs, Actors, and Abstractions in a Distribute...
Moving Legacy Applications to Docker by Josh Ellithorpe, Apcera
Sharding Containers: Make Go Apps Computer-Friendly Again by Andrey Sibiryov
Docker 1.11 Meetup: Containerd and runc, by Arnaud Porterie and Michael Crosby
Docker for Ops: Docker Networking Deep Dive, Considerations and Troubleshooti...

What's hot (20)

PPTX
Docker Online Meetup #30: Docker Trusted Registry 1.4.1
PDF
Securing the Container Pipeline at Salesforce by Cem Gurkok
PDF
Next Generation Cloud: Rise of the Unikernel V3 (UPDATED)
PDF
Docker and the Linux Kernel
PPTX
Intro to Docker at the 2016 Evans Developer relations conference
PDF
Understand how docker works
PPTX
The Good, the Bad and the Ugly of Networking for Microservices by Mathew Lodg...
PPTX
Docker introduction
PDF
Unikernel User Summit 2015: Getting started in unikernels using the rump kernel
PPTX
Docker basics
PDF
Docker Introduction
PDF
Containerize All the Multi-Platform Things! - DockerCon Seattle 2016
PDF
Docker Introduction
PDF
Docker Intro at the Google Developer Group and Google Cloud Platform Meet Up
PDF
Docker introduction for Carbon IT
PDF
What's New in Docker 1.12 (June 20, 2016) by Mike Goelzer & Andrea Luzzardi
PDF
Docker serverless v1.0
PDF
Introduction to Docker
PDF
Docker Online Meetup #30: Docker Trusted Registry 1.4.1
Securing the Container Pipeline at Salesforce by Cem Gurkok
Next Generation Cloud: Rise of the Unikernel V3 (UPDATED)
Docker and the Linux Kernel
Intro to Docker at the 2016 Evans Developer relations conference
Understand how docker works
The Good, the Bad and the Ugly of Networking for Microservices by Mathew Lodg...
Docker introduction
Unikernel User Summit 2015: Getting started in unikernels using the rump kernel
Docker basics
Docker Introduction
Containerize All the Multi-Platform Things! - DockerCon Seattle 2016
Docker Introduction
Docker Intro at the Google Developer Group and Google Cloud Platform Meet Up
Docker introduction for Carbon IT
What's New in Docker 1.12 (June 20, 2016) by Mike Goelzer & Andrea Luzzardi
Docker serverless v1.0
Introduction to Docker
Ad

Viewers also liked (20)

PPTX
Windows Server and Docker - The Internals Behind Bringing Docker and Containe...
PDF
Cloning Running Servers with Docker and CRIU by Ross Boucher
PDF
runC: The little engine that could (run Docker containers) by Docker Captain ...
PDF
Docker for Mac and Windows: The Insider's Guide by Justin Cormack
PDF
Containerd: Building a Container Supervisor by Michael Crosby
PDF
The Golden Ticket: Docker and High Security Microservices by Aaron Grattafiori
PPTX
Docker and Microsoft - Windows Server 2016 Technical Deep Dive
PDF
Advanced Docker Developer Workflows on MacOS X and Windows
PDF
Introduction to Docker I Docker Workshop @ Twitter
PDF
DockerCon SF 2015: From Months to Minutes
PPTX
Dockerizing WordPress
PDF
Docker Online Meetup #3: Docker in Production
PPTX
DockerCon SF 2015: Education for a digital world
PDF
Building Images from dockerfiles
PPTX
DockerCon 16 - Moby's Cool Hack Session
PDF
DockerCon EU 2015: What is it we want in containers anyway?
PPTX
Open source is good for both business and humanity
PPTX
DockerCon EU 2015: Sparebank; a journey towards Docker
PDF
DockerCon EU 2015: Finding a Theory of the Universe with Docker and Volunteer...
PDF
DockerCon SF 2015: How to Build a Secure DevOps Environment for the Government
Windows Server and Docker - The Internals Behind Bringing Docker and Containe...
Cloning Running Servers with Docker and CRIU by Ross Boucher
runC: The little engine that could (run Docker containers) by Docker Captain ...
Docker for Mac and Windows: The Insider's Guide by Justin Cormack
Containerd: Building a Container Supervisor by Michael Crosby
The Golden Ticket: Docker and High Security Microservices by Aaron Grattafiori
Docker and Microsoft - Windows Server 2016 Technical Deep Dive
Advanced Docker Developer Workflows on MacOS X and Windows
Introduction to Docker I Docker Workshop @ Twitter
DockerCon SF 2015: From Months to Minutes
Dockerizing WordPress
Docker Online Meetup #3: Docker in Production
DockerCon SF 2015: Education for a digital world
Building Images from dockerfiles
DockerCon 16 - Moby's Cool Hack Session
DockerCon EU 2015: What is it we want in containers anyway?
Open source is good for both business and humanity
DockerCon EU 2015: Sparebank; a journey towards Docker
DockerCon EU 2015: Finding a Theory of the Universe with Docker and Volunteer...
DockerCon SF 2015: How to Build a Secure DevOps Environment for the Government
Ad

Similar to Unikernels and docker from revolution to evolution — unikernels and docker from revolution to evolution (20)

PPTX
Unik Slides
PDF
Présentation d'Unikernel
PDF
OSCON: Unikernels and Docker: From revolution to evolution
PPTX
Cigna Innovation Summit
PPTX
Linux, Unikernel, LinuxKit: towards redefining the cloud stack.
PDF
Docker Online Meetup #31: Unikernels
PPTX
Docker: Introduction to Container Moduls
PDF
The Next Generation Cloud: Unleashing the Power of the Unikernal
PDF
CPOSC2014: Next Generation Cloud -- Rise of the Unikernel
PDF
SCALE13x: Next Generation of the Cloud - Rise of the Unikernel
PDF
Unikernel User Summit 2015: The Next Generation Cloud: Unleashing the Power o...
PPTX
Introduction to Docker
PDF
Docker in the Oracle Universe / WebLogic 12c / OFM 12c
PPT
RT linux
PDF
Containers: from development to production at DevNation 2015
PPTX
Craft april17
PPTX
Docker Workshop
PDF
PPTX
Introduction to automated environment management with Docker Containers - for...
PPTX
Docker SF Meetup January 2016
Unik Slides
Présentation d'Unikernel
OSCON: Unikernels and Docker: From revolution to evolution
Cigna Innovation Summit
Linux, Unikernel, LinuxKit: towards redefining the cloud stack.
Docker Online Meetup #31: Unikernels
Docker: Introduction to Container Moduls
The Next Generation Cloud: Unleashing the Power of the Unikernal
CPOSC2014: Next Generation Cloud -- Rise of the Unikernel
SCALE13x: Next Generation of the Cloud - Rise of the Unikernel
Unikernel User Summit 2015: The Next Generation Cloud: Unleashing the Power o...
Introduction to Docker
Docker in the Oracle Universe / WebLogic 12c / OFM 12c
RT linux
Containers: from development to production at DevNation 2015
Craft april17
Docker Workshop
Introduction to automated environment management with Docker Containers - for...
Docker SF Meetup January 2016

More from Docker, Inc. (20)

PDF
Containerize Your Game Server for the Best Multiplayer Experience
PDF
How to Improve Your Image Builds Using Advance Docker Build
PDF
Build & Deploy Multi-Container Applications to AWS
PDF
Securing Your Containerized Applications with NGINX
PDF
How To Build and Run Node Apps with Docker and Compose
PDF
Hands-on Helm
PDF
Distributed Deep Learning with Docker at Salesforce
PDF
The First 10M Pulls: Building The Official Curl Image for Docker Hub
PDF
Monitoring in a Microservices World
PDF
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
PDF
Predicting Space Weather with Docker
PDF
Become a Docker Power User With Microsoft Visual Studio Code
PDF
How to Use Mirroring and Caching to Optimize your Container Registry
PDF
Monolithic to Microservices + Docker = SDLC on Steroids!
PDF
Kubernetes at Datadog Scale
PDF
Labels, Labels, Labels
PDF
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
PDF
Build & Deploy Multi-Container Applications to AWS
PDF
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
PDF
Developing with Docker for the Arm Architecture
Containerize Your Game Server for the Best Multiplayer Experience
How to Improve Your Image Builds Using Advance Docker Build
Build & Deploy Multi-Container Applications to AWS
Securing Your Containerized Applications with NGINX
How To Build and Run Node Apps with Docker and Compose
Hands-on Helm
Distributed Deep Learning with Docker at Salesforce
The First 10M Pulls: Building The Official Curl Image for Docker Hub
Monitoring in a Microservices World
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
Predicting Space Weather with Docker
Become a Docker Power User With Microsoft Visual Studio Code
How to Use Mirroring and Caching to Optimize your Container Registry
Monolithic to Microservices + Docker = SDLC on Steroids!
Kubernetes at Datadog Scale
Labels, Labels, Labels
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Build & Deploy Multi-Container Applications to AWS
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
Developing with Docker for the Arm Architecture

Recently uploaded (20)

PDF
NewMind AI Weekly Chronicles - August'25-Week II
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
Getting Started with Data Integration: FME Form 101
PPTX
Machine Learning_overview_presentation.pptx
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
SOPHOS-XG Firewall Administrator PPT.pptx
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
Empathic Computing: Creating Shared Understanding
PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
1. Introduction to Computer Programming.pptx
PDF
Electronic commerce courselecture one. Pdf
NewMind AI Weekly Chronicles - August'25-Week II
Digital-Transformation-Roadmap-for-Companies.pptx
Per capita expenditure prediction using model stacking based on satellite ima...
Diabetes mellitus diagnosis method based random forest with bat algorithm
Building Integrated photovoltaic BIPV_UPV.pdf
Big Data Technologies - Introduction.pptx
Getting Started with Data Integration: FME Form 101
Machine Learning_overview_presentation.pptx
gpt5_lecture_notes_comprehensive_20250812015547.pdf
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
MIND Revenue Release Quarter 2 2025 Press Release
Encapsulation_ Review paper, used for researhc scholars
Advanced methodologies resolving dimensionality complications for autism neur...
“AI and Expert System Decision Support & Business Intelligence Systems”
SOPHOS-XG Firewall Administrator PPT.pptx
Assigned Numbers - 2025 - Bluetooth® Document
Empathic Computing: Creating Shared Understanding
Network Security Unit 5.pdf for BCA BBA.
1. Introduction to Computer Programming.pptx
Electronic commerce courselecture one. Pdf

Unikernels and docker from revolution to evolution — unikernels and docker from revolution to evolution

  • 1. Unikernels and Docker: from Revolution to Evolution Mindy Preston
  • 2. Mindy Preston Member of Technical Staff at Docker, tweets @mindypreston   2
  • 3. A maintainer of •  the MirageOS unikernel •  VPNKit, part of Docker4Mac and Docker4Windows 3
  • 4. 4
  • 5. Some Definitions •   "docker": you're all probably pretty solid on this :) •   "unikernels": artifacts representing a set of software which runs in a single address space, with no distinction between kernel and userspace code. •   "library operating system": a build system which can link a group of libraries representing traditional OS functions with an application to produce a unikernel. 5
  • 7. "nobody cares about containers unikernels" •  something which allows the execution of general application code •  something easily described completely (you can enumerate the things it needs) •  something low-overhead (small in terms of binary size, cpu/mem, or some othe resource consumption) 7
  • 8. Artifact is Code application code (= source) (intepreter & dependencies) + external app dependencies OS + shared libraries computer •  a very nice way to get runtime errors 8
  • 9. Artifact is Instructions application code |> compiler & dependencies |> binary OS + shared libraries computer •  shared libraries are an opportunity for chaos •  few guarantees on build environment 9
  • 10. Artifact is Instructions + (some) environment app code + shared libs |> compiler + deps |> static binary OS computer •  resource consumption cost •  build environment is still not necessarily reproducible 10
  • 11. Artifact is Code + Build Spec app code + base img + deps + config |> container builder |> image container runner OS computer •  [ Dockerfile ] for a more complete and repeatable description •  (although reproducibility can be sabotaged: RUN apk add) •  apps that need to tune system parameters (privileged mode) 11
  • 12. Artifact is Code + OS app code + app deps + OS deps |> unikernel builder |> unikernel unikernel runner computer •  library operating systems: system dependencies on the same conceptual level as application dependencies •  unikernels: the artifact we generate, which doesn't need to run on a traditional OS •  note what's missing: build environment isn't necessarily well-specified 12
  • 14. to follow along... get started with docker pull ocaml/opam:ubuntu or your OS of choice you can also try docker pull halvm/base to give the Haskell unikernel project HaLVM a shot 14
  • 16. what has your OS done for you lately? •  timekeeping •  networking •  entropy/randomness •  storage •  logs •  I/O: keyboard, mouse, video, sound, pancake printer, light-up bracelet... 16
  • 17. sidebar: rump •  twiddling knobs in the kernel is tough •  it's way easier if you can test things in isolation 17
  • 19. you too are a systems programmer! •  most unikernel projects supply implementations for things like networking •  some are swappable (including MirageOS - make the types agree and you're good to go) •  you can write your own! 19
  • 20. reject the default reality and substitute your own •  common failure points for applications are "external" problems, which the OS notices •  you can stress your application easily, by providing libraries that always have edge cases occurring 20
  • 21. fail gloriously,loudly,often •  network interfaces that always have new packets waiting •  random number generators that read from a static list •  entropy sources that always block •  filesystems that are always full •  block devices that are always busy •  DNS that always sends you to supertrustworthy.plzgivemeyourcreds.com 21
  • 22. OS libraries in your applications •  Docker4Mac and Docker4Windows hosts can have complicated networking situations •  VPNs, custom DNS, mandatory proxies •  the Mac or Windows machine is configured to do the right thing — don't break that! •  if nc google.com 80 works from the terminal, it should work from a container •  use a unikernel networking library to reimplement an old solution to this: 22
  • 24. VPNKit •  vpnkit is a piece of a library operating system, on your machine, right now, as part of docker •  let's use unikernels to make the whole stack work better! 24
  • 25. something more dramatic run a unikernel with docker tools* - Martin Lucina's unikernel-runner * (given direct access to /dev/kvm on the host) 25
  • 26. where we're going •  we'll have done a good job when unikernels Just Work •  it should be just as easy to build, ship, run, and scale a unikernel as a process or a container •  sometimes you'll want a unikernel and sometimes you won't — we want to let you do the right thing no matter what 26
  • 28. You Can Make It Happen! •  VPNKit - help improve libraries in Docker4Mac/Win •  HyperKit - dig into the D4M/W hypervisor! •  unikernel.org - find or list your favorite unikernel project! •  MirageOS summer hack retreat - join us face-to-face to improve MirageOS! 28
  • 29. special thanks to... •  my rad fellow Dockerites •  the fantastic contributors to Docker, MirageOS, HaLVM, Rump, and myriad other unikernel projects •  Justin Cormack for last minute slide assistance and real good emceeing 29