Patrick Chanezon, @chanezon David Chung, @dchungsf Mindy Preston, @mindypreston Build your own container-based system with the Moby project May 2017
French Polyglot Platforms Software Plumber San Francisco Developer Relations @chanezon
Docker
The world needs tools of mass innovation
A programmable Internet would be the ultimate tool of mass innovation
A commercial product, built on a development platform, built on infrastructure, built on standards. Docker is building a stack to program the Internet
Docker is building a stack to program the Internet CE EE
enterprise edition Ubuntu Fedora Mac Azure CentOS Windows 10 AWS Debian community edition Ubuntu Windows Server Azure CentOS Suse Red Hat AWS Oracle Linux
Orchestration Container Runtime OS Infrastructure Management Container Platform Layers Application Services
Docker is a platform made of components Raft Store Node Identity Secrets Routing Mesh Overlay Networking Swarm Orchestration Engine Application Services
12,000,000,000 11,000,000,000 10,000,000,000 9,000,000,000 8,000,000,000 7,000,000,000 6,000,000,000 5,000,000,000 4,000,000,000 3,000,000,000 2,000,000,000 1,000,000,000 Notary runC containerd HyperKit , VPNKit, DataKit SwarmKit libcontainer libnetwork InfraKit 2013 2014 2015 2016 2017 1M 2014 PULLS 1B 2015 PULLS 6B 2016 PULLS 12B 2017 PULLS linuxKit
LinuxKit A toolkit for building secure, portable and lean operating systems for containers
Taking Docker multi-platform “I want Docker for X”
Desktop Server Cloud I want Docker for…
Not every platform provides a Linux subsystem
Not every platform provides a Linux subsystem Orchestration Container Runtime Linux Subsystem Infrastructure Management Application Services
The container movement needs a secure, lean, portable subsystem
The container movement needs a secure, lean, portable Linux subsystem. introducing
Only works with containers - Smaller attack surface - Immutable infrastructure - Sandboxed system services - Specialized patches and configuration Incubator for security innovations - Wireguard, Landlock, KSPP - MirageOS type safe system daemons Community-first security process - Linux is too big for any one company to secure it - Participate in existing Linux security efforts 1. LinuxKit: a SECURE Linux subsystem
- Minimal size, minimal boot time - All system services are containers - Everything can be removed or replaced 2. LinuxKit: a LEAN Linux subsystem
- Desktop, server, IoT, mainframe - Intel & ARM - Bare metal & virtualized 3. LinuxKit: a PORTABLE Linux subsystem
Docker and Microsoft collaborate to bring Linux containers to Windows + +
https://github.com/linuxkit/linuxkit Get Started with LinuxKit
Moby An open framework to assemble specialized container systems without reinventing the wheel.
Pioneers 2013 - 2014
Production Model: open-source!
Use case: cloud native apps on Linux server Early Adopters 2015 - 2016
Production Model: OPEN COMPONENTS
Mainstream 2017 - 2018 Containers are spreading to every category of computing: server, datacenter, cloud, IoT, desktop, mobile…
Case study: Specializing Docker for the mainstream Desktop Server Cloud
The open component model shows its limits…
The auto industry has solved this problem: COMMON ASSEMBLIES.
Scaling the Docker production model: share components AND ASSEMBLIES.
It’s time to take our ecosystem to the next level… By collaborating on components AND COMMON ASSEMBLIES.
– Library of 80+ components – Package your own components as containers – Reference assemblies deployed on millions of nodes – Create your own assemblies or start from an existing one A framework to assemble specialized container systems without reinventing the wheel.
Docker uses Moby for its open-source – Thousands of contributors, hundreds of patches/week – Component development – Specialized assembly development – Integration tests – Architecture design – Integration with other projects – Experimentation and bleeding edge features
Docker uses Moby for its open-source... and so can you! – Community-run – Open governance inspired by the Fedora project – Plays well with existing projects - no donation necessary!
Moby and Docker
What it means for you Moby helps you innovate without tying you to Docker System BuildersDocker Users Docker will better leverage the ecosystem to innovate faster for you
Moby transforms multi-month R&D projects into weekend projects.
locked-down Linux with remote attestation Weekend project #1: Notary
custom CI/CD stack Weekend project #2: Notary Registry Docker Builder +
custom CI/CD stack + Debian + Terraform Weekend project #3: Notary Docker Builder + Registry
“RedisOS” Weekend project #4:
"RedisOS" for Windows "RedisOS" for Mac "RedisOS" for bare metal HyperKit bare metal
Etcd clustering on Google Cloud Weekend project #5:
SSHD Kubernetes on the Mac Weekend project #6: HyperKit
Getting Started - Blog https://mobyproject.org/blog - Twitter @moby - Github moby/moby
Let’s take containers mainstream!
InfraKit A toolkit for building declarative, self-healing infrastructure.
What is it? 53 • Launched at LinuxCon, Berlin in October, 2016. • Toolkit for building declarative, self-managing distributed applications • Active management with active controllers • scaling groups, rolling updates • monitoring / health checks • connecting nodes to L4 / ingress • Declarative infrastructure
Architecture CLI API
container orchestration Where does it fit? 55 kubectl run nginx --image=nginx gcloud container node-pools list --zone us- central1-f --cluster MyWorkers aws autoscaling update-auto-scaling-group --auto-scaling-group-name MyWorkers docker create service nginx … infrakit group describe workers az vmss create --resource-group vmss- test-1 --name MyWorkers container orchestration infrastructure orchestrationinfrastructure orchestration list, err := group.Controller.Describe(“workers”)
App Opscontainer orchestrationApp Ops One console across environments 56 kubectl run nginx --image=nginx docker create service nginx … infrakit group describe workers container orchestration infrastructure orchestration list, err := group.Controller.Describe(“workers”) AWS RackHDAZ GCP OneVIEWMAASKVM VMW Cloud Ops Hardware OpsCluster Ops
Configuration Example config file (zk.conf): Group configuration = Instance + Flavor { "Properties": { /* raw configuration */ } } { "groups" : { "my_zookeeper_nodes" : { "Properties" : { "Instance" : { "Plugin": "instance-vagrant", "Properties": { "Box": "bento/ubuntu-16.04" } }, "Flavor" : { "Plugin": "flavor-zookeeper", "Properties": { "type": "member", "IPs": ["192.168.1.200", "192.168.1.201", "192.168.1.202"] } } } } } }
Current Status
Support more platforms 59 • Compute: • Bare-metal: HP OneView, MAAS, RackHD • Public cloud: AWS, GCP • MacOS X (HyperKit); Docker containers • Coming soon: Azure, IBM, Digital Ocean, Packet, libvirt • Other resource types • AWS - vpc, subnets, gateways, etc.
Improve usability 60 • Templates • Complex scripts and configuration in any format; no more escape quotes in JSON • Fetch templates from remote repositories • Playbooks • CLI - flags, prompts — config driven and dynamic • Share “playbooks” from remote repositories
Improve core system 61 • High Availability — Swarm Mode or etcd • New Plugin types — Metadata and Events • Metadata: cluster-wide sysfs and reflection • Events - publish / subscribe • Remote client access: infrakit -H host:port to remote cluster
Road Map
Use Cases 63 • Support container orchestration • bootstrapping + day N management • API for cluster autoscaling • k8s, Docker Swarm Mode • Bare-metal + GPU provisioning • IoT — LinuxKit integration / custom kernel deployment
Improve usability 64 • Finalize API / Schema for 1.0 • Make it easy to consume • Simplify setup - fewer daemons and binaries • Embeddable / vendor API • Sensible CLI for stable / experimental features • Make it easy to extend / contribute • metadata / instance plugins • playbooks / reusable templates • community CI / compatibility testing • Documentation
Improve core system 65 • Provisioning of diverse resource types • networks / proxies / load balancers • GPU • Stability / performance of core controllers • Asynchronous messaging - mqtt, natsd, amqp • Monitoring + Health check SPI
Support more platforms 66 • Direct libvirt / KVM / CUDA • Better bare-metal / hardware ops integration • Kernel image build pipeline — LinuxKit Build, test, and deploy clusters from infrastructure definitions to kernel images
Get involved https://github.com/docker/infrakit dockercommunity.slack.com: #infrakit
Learn More at OSCON - Mindy Preston, Amir Chaudhry’s “MirageOS 3: Smaller, lighter, and more transparent” Wednesday 4:15 pm - David Chung, Bill Farner “InfraKit: A toolkit for infrastructure orchestration” Thursday 11 am
THANK YOU

Oscon 2017: Build your own container-based system with the Moby project

Editor's Notes

  • #9 Docker has its roots in dev productivity still lot of work to do solve it by listening to devs, solving all their pbs one by one let’s talk about dev problems.
  • #10 our job is to give you the best tools to take your app to prod securely 3 rules we follow usability, portability, scalability usable security so that devs don't bypass it scale, automation Docker suite of tools for security in production tools deliver security that is usable scalable portable not getting in the way of operators help developers make applications be more secure has to be easy and portable so that developers will use it. Security never ends, continuous process We made a lot of progress this year 4 features I want to talk about
  • #11 reason that Docker is so componentized because of open dev model we adopted partnered with an ecosystem that grew around it several phases ---- docker is a container platform solve pb for our users develop new components, or improve existing components open dev model, 12 oss projects produce one comp of a container platform any one project useless on its own
  • #14 one story how we used this model to solve toughest tech pb way could not have without it moby at docker to innovate faster editions case study of using moby pb: going beyond linux no need to bring you own linux os originally Linux only market we want to use docker everywhere we don't have a favorite linux product we want to use containers our platform is not linux mac, windows 10, azure, aws, gcp portable container platform, need docker to work on our existing platform
  • #15 one story how we used this model to solve toughest tech pb way could not have without it moby at docker to innovate faster editions case study of using moby pb: going beyond linux no need to bring you own linux os originally Linux only market we want to use docker everywhere we don't have a favorite linux product we want to use containers our platform is not linux mac, windows 10, azure, aws, gcp portable container platform, need docker to work on our existing platform
  • #16 Docker has its roots in dev productivity still lot of work to do solve it by listening to devs, solving all their pbs one by one let’s talk about dev problems.
  • #18 Docker has its roots in dev productivity still lot of work to do solve it by listening to devs, solving all their pbs one by one let’s talk about dev problems.
  • #19 we partnerd with several companies and LF to create this component ongoing efforts to port it to diff environments, map of different efforts HPE VMW Mainframe IoT ARM Windows Clouds….
  • #20 everything uses containers, every major Linux based project has embraced containers containers are how Linux will work going fwd Based on containerd System services running as containers LinuxKit is the place to try out new Linux security ideas Provably secure, but also Option to be at the bleeding edge of security secure edge channel, key feature of the project Working with industry to make LinuxKit the most secure OS for everybody
  • #22 Base for Linux functionality on any environment ex: GE EdgeOS, exotic iot devices, cannot do that with an OS designed for Datacenter Ways to make Linux secure, but locked into a specific environment Take advantage of every aspect of infrastructure
  • #23 Microsoft partnering with Docker to bring Linux to Windows
  • #26 bleeding edge cloud developers
  • #29 define components of the platform as containers allows more advanced production models multiple stages of collaboration
  • #30 deploying at scale in specialized systems
  • #31 last year editions, mac, windows, cloud
  • #32 how do we deliver all editions of our platform and scale our engineering single systemn company to multi system company each is very specialized whole point of docker is to deliver a standard experience using containers
  • #33 steal an idea from auto industry assemblies, different ways of assembling components open common assemblies for iot, mainframe, cloud native, desktop achieve scale through openness propose ecosystem to share this model of growth component and assembly level, everyone can bring their components and assemblies and innovate at both levels
  • #34 introduced assemblies allowed docker to scale internally allowed us to ramp up to 12 editions of docker complexity duplication of effort, design allowed docker to scale internally allowed us to ramp up to 12 editions of docker introduced an additional level of collaboration, assembly, cpatures what is common and that teams can use for their environments
  • #35 looks like this, moby origin, assembly we use to create editions of docker all of our assembly dev will take place in moby project if want close derivative to docker platform, join dev of moby origin want diofferent assembly, fork moby-origin partners Introducing a new project where Docker does 100% of its oss work
  • #37 all components all assemblies inviting users, partners the whole ecosystem to join this project and together take container ecosystem to the mainstream seed this project with 12s of components, an assembly that is very stable and deployed in prod on 1000s nodes the most important project we have introduced since 2014 not a foundation moby does not own projects any project can come collab and retain ownership of their code
  • #38 all components all assemblies inviting users, partners the whole ecosystem to join this project and together take container ecosystem to the mainstream seed this project with 12s of components, an assembly that is very stable and deployed in prod on 1000s nodes the most important project we have introduced since 2014 not a foundation moby does not own projects any project can come collab and retain ownership of their code
  • #39 all components all assemblies inviting users, partners the whole ecosystem to join this project and together take container ecosystem to the mainstream seed this project with 12s of components, an assembly that is very stable and deployed in prod on 1000s nodes the most important project we have introduced since 2014 not a foundation moby does not own projects any project can come collab and retain ownership of their code
  • #40 platform based on containers
  • #41 Docker uses Moby to innovate in the open. Each version of Docker will innovate faster Moore innovation/more choice
  • #42 all components all assemblies inviting users, partners the whole ecosystem to join this project and together take container ecosystem to the mainstream seed this project with 12s of components, an assembly that is very stable and deployed in prod on 1000s nodes the most important project we have introduced since 2014 not a foundation moby does not own projects any project can come collab and retain ownership of their code
  • #50 platform based on containers
  • #51 platform based on containers
  • #55 InfraKit can be used set up to run with leader election (e.g. integrated with Docker swarm mode) to achieve high availability. Multiple plugin sets are running as hot standby but only one is active (the leader).
  • #58 Simple patterns Compose them into a large configuration. Group is made up of Instance and Flavor