innovating out in the open

10
Innovating Out in the Open Phil Estes, IBM <[email protected]> Twitter/IRC: @estesp

Upload: devevents

Post on 13-Apr-2017

197 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Innovating Out in the Open

Innovating Out in the OpenPhil Estes, IBM <[email protected]>

Twitter/IRC: @estesp

Page 2: Innovating Out in the Open

Phil EstesSenior Technical Staff MemberIBM Open Cloud Technologies@estesp

> Docker core engine maintainer> Member of “Docker Captains” program> 10+ years involved in Linux/OSS> Interests: cloud/containers/Linux

Intro

Key upstream accomplishments> Brought user namespace support to the Docker engine> Helped design v2.2 image specification with multi-platform support> Implemented first tool to create multi-platform images in Docker v2.3 registry

Page 3: Innovating Out in the Open

Open Container Initiative (OCI)

•A Linux Foundation Collaborative Project

•Free from control by any particular vendor’s specific cloud stack or ecosystem

•Includes a specification, reference runtime* and now, a specified image format

An open governance structure for creating open industry standards: a common container runtime and image format.*seeded with runc +

libcontainer by Docker

Page 4: Innovating Out in the Open

OCI: Specs and Status> Runtime specification: Release 0.5.0 / April

2016 https://github.com/opencontainers/runtime-spec/releases/tag/v0.5.0

Goal is to reach a 1.0 release by mid-JuneIncludes required core for containerization on Linux &

Windows> Image format specification: Release 0.1.0 /

May 2016 https://github.com/opencontainers/image-spec/releases/tag/v0.1.0

Seeded with Docker registry v2.2 specificationWork just beginning in the repository; 0.1 is a “stake in the

ground”

▪ Announced June 20th, 2015

▪ Charter signed on December 8th, 2015

▪ 46 current member companies

▪ Target of a 1.0 specification (runtime) by June

https://opencontainers.orghttps://github.com/

opencontainers

Page 5: Innovating Out in the Open

Introduction to `runc`> runc is a client wrapper around

libcontainer> Libcontainer is the OS level interface for

containersOther platforms and architectures can implement the libcontainer API via their

own primitives/system-level container concepts

$ docker run -it --read-only -v /host:/hostpath alpine sh/#

{ "ociVersion": "0.6.0-dev", "platform": { "os": "linux", "arch": "amd64" }, "process": { "terminal": true, "args": [ "sh" ], "env": [ "PATH=/usr/local/sbin:/usr/local/bin:/bin”

config.json

Page 6: Innovating Out in the Open

Runc In The Wild

▪CloudFoundry Garden OCI implementation-https://github.com/cloudfoundry-incubator/guardian

-Uses runc as a backend for container execution

▪Docker 1.11 (and above)- Switched from direct libcontainer API

linkage to calling runc as container executor

- Uses containerd as a gRPC daemon to disconnect Docker daemon (API/mgmt) from container execution (allows daemon restart in future without container runtime impact)

Page 7: Innovating Out in the Open

runC: An open innovation platform for containersImplement low-level container features

▪Operating system level features should be defined in the OCI runtime specification

▪New capabilities (PID cgroup controls, checkpoint/restore, seccomp) implemented in runC

OCI compliance/pluggable execution engine▪Implement a OS/environment for containers via an OCI spec compliant binary▪Examples: runz (Solaris zones), runv (hypervisor-based), Intel Clear Containers

Iterative container configuration test/debug▪Simple variant of “Docker-like” containers with less friction for quick modifications

▪Low bar for dependencies: single binary + physical rootfs bundle + JSON config

INTEREST

INTEREST

INTEREST

1. Docker 2. OpenVZ 3. Huawei 4. Redhat 5. Google 6. IBM 7. SuSE8. Pivotal 9. Fujitsu 10. Microsoft

Top 10 Contributors to opencontainers/runc

Page 8: Innovating Out in the Open

Let’s Demo

What I’m going to show you:runc runC binary (in my case, shared with Docker

1.11 installationgithub.com/opencontainers/runc

ocitools Command-line JSON OCI spec generator github.com/opencontainers/ocitoolsriddler Docker container → JSON OCI spec converter github.com/jfrazelle/riddleruidmapshift

Filesystem ownership shift tool for user namespace mappings

http://bazaar.launchpad.net/~serge-hallyn/+junk/nsexec/view/head:/uidmapshift.c

netns Netlink-based bridge networking implemened as an OCI pre-start hook

github.com/jfrazelle/netns

Page 9: Innovating Out in the Open

OCI Futures▪Image format specification

-Just getting underway▪More users and contributed implementations▪runC innovations moving into higher level implementations

-Checkpoint+restore under consideration for exposure via Docker API-Seccomp, user namespaces, and PID limits are prior examples

▪What do you plan to do with OCI and/or runC?

Page 10: Innovating Out in the Open

Questions?

@estesp

github.com/estesp

[email protected]

http://integratedcode.us

IRC: estesp CON

TACT

IN

FO