app container · app container spec noun a new, open specification for running applications in...

66
github.com/coreos/rocket [email protected] App Container github.com/appc [email protected]

Upload: others

Post on 04-Oct-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

github.com/coreos/[email protected]

App Containergithub.com/appc

[email protected]

Page 2: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

Jonathan Boullegithub.com/jonboulle@baronboulle

Page 3: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

App Container (appc)github.com/appc

[email protected]

Page 4: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

appc != Rocket

Page 5: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

App Container Spec nounA new, open specification for running

applications in containers

Page 6: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

Containers?!

Page 7: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

KERNELSYSTEMDSSH

PYTHONJAVANGINXMYSQLOPENSSL

dist

ro d

istr

o di

stro

dis

tro

dist

ro d

istr

o di

stro

dis

tro

dist

ro d

istr

o di

stro

APP

Page 8: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

KERNELSYSTEMDSSH

LXC/DOCKER/ROCKET

PYTHONJAVANGINXMYSQLOPENSSL

dist

ro d

istr

o di

stro

dis

tro

dist

ro d

istr

o di

stro

dis

tro

dist

ro d

istr

o di

stro

APP

Page 9: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

Application Containersself-contained

portabledecoupled from operating system

Page 10: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

appc principlesWhy are we doing this?

Page 11: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

OpenIndependent GitHub organisation

Contributions from Cloud Foundry, Mesosphere, Google, Red Hat

(and many others!)

Page 12: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

Simple but efficientSimple to understand and implement, but eye to optimisation (e.g. content-based

caching)

Page 13: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

SecureCryptographic image addressing

Image signing and encryptionContainer identity

Page 14: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

Standards-basedWell-known tools (tar, gzip, gpg, http), extensible with modern technologies

(bittorrent, xz)

Page 15: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

ComposableIntegrate with existing systems

Non-prescriptive about build workflowsOS/architecture agnostic

Page 16: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

appc components

Page 17: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

Image FormatApplication Container Imagetarball of rootfs + manifest

uniquely identified by ImageID (hash)

Page 18: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

Image DiscoveryApp name →artefact

HTTPS + HTML

Page 19: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

Executorgrouped applicationsruntime environment

isolatorsnetworking

Page 20: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

Metadata Servicehttp://$AC_METADATA_URL/acMetadata

container metadatacontainer identity (HMAC verification)

Page 21: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

appc tooling

Page 22: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

$ actool buildrootfs + manifest → ACI

Page 23: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

$ actool validateis this ACI compliant with the spec?

Page 24: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

$ actool discoverexample.com/app -> https://example.

com/releases/app.aci

Page 25: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

ACE validatoris this executor compliant with the spec?

$EXECUTOR run ace_validator.aci

Page 26: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

appc community

Page 27: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

cdaylward/libappcC++ library for working with app containers

Page 28: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

cdaylward/noseconeC++ executor for running app containers

Page 29: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

(sidenote: mesos)https://issues.apache.org/jira/browse/MESOS-2162

Page 30: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

3ofcoins/jetpackFreeBSD Jails/ZFS-based executor

(by @mpasternacki)

Page 31: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

sgotti/acidoACI toolkit (build ACIs from ACIs)

Page 32: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

appc/docker2acidocker2aci busybox/latest

docker2aci quay.io/coreos/etcd

Page 33: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

appc/goacigoaci github.com/coreos/etcd

Page 34: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

appc statusStabilisingv0.3.0+git

TODO: pods, isolators

Page 35: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

github.com/coreos/[email protected]

Page 36: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

implementation of appcdiscoveryexecutor

metadata service

Page 37: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

golang + Linuxself-contained

init system agnostic

Page 38: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

CLI onlyno daemon

apps run directly under spawning process

Page 39: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

bash

rkt

application

Page 40: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

runit

rkt

application

Page 41: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

systemd

rkt

application

Page 42: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

upstart

rkt

application

Page 43: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

Rocket internalsmodular architecture

execution divided into stagesstage0 → stage1 → stage2

Page 44: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

stage0rkt binary

discover, retrieve application imagesset up container filesystems

Page 45: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

stage1execution environment for apps

container rootfs + init binaryapp process management, cgroups,

metadata service

Page 46: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

stage2actual app execution

Page 47: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

rocket v0.1.0first version (announcement)

somewhat limited..

Page 48: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

rkt fetchrkt fetch https://example.com/my_app.aci

rkt fetch coreos.com/etcd:v2.0.0.rc1simple CAS on disk

Page 49: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

rkt runrkt run coreos.com/etcd:v2.0.0-rc.1

rkt run ./my-app.acirkt run sha512-fcdf125873...

Page 50: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

rocket v0.3.2+gitwhat's new?

Page 51: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

new commands!rkt enterrkt list

rkt statusrkt gc

rkt trust

Page 52: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

rkt enter, listenter the namespaces of an application

list containers on the system

Page 53: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

rkt status, rkt gcfile-based locking (flock)

mark-and-sweep gc (time based)

Page 54: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

rkt trusteasily manage public ACI signing keys

rkt trust --prefix coreos.com/etcdrkt trust --root https://foo.com/key.asc

Page 55: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

stage1 as ACIno more go-bindata

swappable execution environmentsdistribution packaging friendly!

Page 56: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

Docker image supportrkt run docker://redis:latest

Page 57: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

Rocket Crash course!

Page 58: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

rocket v0.4.0+what's coming?

Page 59: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

networking"it's complicated"

Page 60: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

networkingIP-per-pod

extensible plugin-based systemhttp://goo.gl/lQA9PB

Page 61: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

host systemd integration$ machinectl list

$ machinectl terminate

Page 62: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

developer environmentsinteractive containers

filesystem diffs → new ACI

Page 64: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

App Container+

get involved!GitHub: "help wanted" label

Page 65: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

Questions?

Page 66: App Container · App Container Spec noun A new, open specification for running applications in containers. Containers?! KERNEL SYSTEMD SSH PYTHON JAVA NGINX ... rkt run ./my-app.aci

Credits

● SpaceX Falcon 9 Landing by Elon Musk ● Golang gopher by Renee French, licensed

under CC BY 3.0● Tux by Larry Ewing, Simon Budig and Anja

Gerwinski