Slide 1

Slide 1 text

OCI Image Format Specification v1 Josh Wood DocOps at CoreOS @joshixisjosh9

Slide 2

Slide 2 text

CoreOS runs the world’s containers We’re hiring: [email protected] [email protected] 90+ Projects on GitHub, 1,000+ Contributors coreos.com Support plans, training and more OPEN SOURCE ENTERPRISE

Slide 3

Slide 3 text

Overview Making Containers Portable

Slide 4

Slide 4 text

!Define fundamentals around which consensus can form !Are not a complete platform for production !Example: HTML Standards

Slide 5

Slide 5 text

!Writing an HTML doc: by hand, generating with a CMS, or compiling with a static engine like Hugo !Rendering (executing) that doc: Browsers implement the standard HTML as a Standard

Slide 6

Slide 6 text

!Different ways to create HTML - tools compete on that experience, not what they produce !Browsers compete on: render speed, UI features, upgrades/security, … !They agree on the standard Competing above standards

Slide 7

Slide 7 text

!Discrete artifact containing everything an app needs to run !Dependencies, libraries, executable Containers: What even are they?

Slide 8

Slide 8 text

The OCI Container Image standard is like HTML in our analogy: !Tools to build containers (actool, Docker (client), …) !Runtimes to execute them: OCI runtime (runc): Specifically: Docker, rkt, CRIO, et al Standards for containers

Slide 9

Slide 9 text

Diverging implementations could: !Fragment communities and efforts !Do redundant work !Lock users into implementation and vendor Why we need standards for containers

Slide 10

Slide 10 text

!Execution environment choice, features: rkt has some features for bootstap-level software packaged in containers. !Kubernetes has an interface, CRI, designed to make the runtime modular, replaceable !Migration among environments enables economic decisions about where things run Why you need standards for containers

Slide 11

Slide 11 text

History The road to the OCI Image Format

Slide 12

Slide 12 text

c.2014 Docker, obvs, and Docker v1 and v2 image formats Rkt and AppC, `.aci` images Tools, runtime, and image format: All different History: Before the OCI Image standard

Slide 13

Slide 13 text

A CLI for running app containers on Linux. Focuses on: ! Security ! Modularity ! Standards/Compatibility

Slide 14

Slide 14 text

A CLI for running app containers on Linux. Modularity: Internal ! Stages of execution ! Fly, cgroups/ns, KVM vm ○SAME CONTAINER

Slide 15

Slide 15 text

!The OCI brings together CoreOS, Docker, Red Hat, Google, Microsoft and others to define standards for software containers !April 2016: Efforts begin on OCI Container Image Format Specification !Based on Docker v2.2 image structure Open Container Initiative

Slide 16

Slide 16 text

The Standard OCI Container Image Specification v1.0

Slide 17

Slide 17 text

!Resize/Upgrade - coordination for availability !Layout - inherits Docker v2.2 layers !Distribution - out of OCI scope !Sign/Verify - Optional OCI Container Image Specification

Slide 18

Slide 18 text

OCI Container Image ancestry Docker v1 appc Docker v2 OCI Image Spec Content-addr No Yes Yes Yes Signable No Yes Yes, optional Yes, optional* Federated namespace Yes Yes Yes Yes Introduced 2013 2014 April 2015 July 2017

Slide 19

Slide 19 text

https://coreos.com/blog/oci-image-specification.html https://coreos.com/blog/making-sense-of-standards.html https://blog.docker.com/2017/07/demystifying-open-container-initiative-oci- specifications/ And of course: https://github.com/opencontainers/image-spec https://www.opencontainers.org/about/oci-scope-table URLs

Slide 20

Slide 20 text

[email protected] @joshixisjosh9 joshix.com QUESTIONS? Thanks! We’re hiring: coreos.com/careers Let’s talk! CoreOS-User google group More events: coreos.com/ community LONGER CHAT?