1
0
Fork 0
mirror of https://github.com/vbatts/talks.git synced 2024-12-26 16:46:31 +00:00
talks/2019/08/devconf.in-container_runtimes/index.html
Vincent Batts 0ff34eb979
devconf.IN 2019
Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2020-03-23 16:06:06 -04:00

2453 lines
82 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html class="sl-root decks export offline loaded">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Container Runtimes - Devconf.IN 2019</title>
<link rel="stylesheet" type="text/css" href="lib/offline-v2.css">
<!-- Team CSS -->
<style id="global-css-output" type="text/css">
@import url("https://s3.amazonaws.com/static.slid.es/fonts/overpass2/overpass2.css");
.reveal {
/*fix icon inversion*/
}
.reveal svg,
.reveal text,
.reveal tspan,
.reveal svg text {
font-family: "Overpass 2", Overpass, sans-serif !important;
color: currentcolor;
fill: currentcolor;
}
.reveal .sl-block {
color: #354045;
fill: currentcolor;
}
.reveal .sl-block svg {
color: currentcolor;
}
.reveal .has-dark-background,
.reveal .has-dark-background > .sl-block {
color: white;
fill: currentcolor;
}
.reveal .has-dark-background > .sl-block .sl-block {
color: white;
fill: currentcolor;
}
.reveal section > .sl-block .redhat-logo .logotext {
fill: black;
}
.reveal .has-dark-background > .sl-block .redhat-logo .logotext {
fill: white;
}
.reveal .has-dark-background > .sl-block[data-block-type="image"] {
color: white;
}
.reveal [fill="none"] {
fill: none !important;
}
.reveal [fill="#a30000"] {
fill: #a00 !important;
}
.reveal [fill="#cc2029"],
.reveal [fill="#cb2027"],
.reveal [fill="#c00"] {
fill: #c00 !important;
}
.reveal [fill="#fff"] {
fill: #fff !important;
}
.reveal [fill="#6d6e70"] {
fill: #6d6e70 !important;
}
.reveal [fill="#231f20"] {
fill: currentcolor !important;
}
.reveal [fill="#efab1f"] {
fill: #efab1f !important;
}
.reveal [fill="#92d400"] {
fill: #92d400 !important;
}
.reveal .has-dark-background [fill="#6d6e70"] {
fill: #266272 !important;
}
.reveal .has-dark-background [fill="#fff"] {
fill: #555 !important;
}
.reveal .has-dark-background [fill="#fff"] {
fill: #333 !important;
}
.reveal .has-dark-background [stroke="#231f20"] {
stroke: currentcolor;
}
.reveal [data-inline-svg="true"] img {
display: none;
}
</style>
<!-- Theme CSS -->
<style id="theme-css-output" type="text/css">
@import url(//overpassmonotest-30e2.kxcdn.com/overpass-mono.css);
.reveal {
/*
.sl-block[data-block-type="snippet"],
.sl-block[data-block-type="image"]
{
text,
tspan,
polygon,
path,
rect,
ellipse {
fill: currentcolor;
}
}
*/
/*slide-default*/
/*Custom Ordered Lists */
/*helpers*/
/*fixing left aligned text*/
/*h1,h2,h3,h4,h5,h6{&::first-letter{margin-left:-.09em;}}*/
/*icon absolute brute-fix*/
/*
.present .icon.stroked path.long{ stroke-width: 2px ;
-webkit-animation: icon-animation-long 3.5s 1.5s 1;
-moz-animation: icon-animation-long 3.5s 1.5s 1;
animation: icon-animation-long 3.5s 1.5s 1;
}*/
/*
.present .icon.stroked path.short{
-webkit-animation: icon-animation-short 3.5s 1.5s 1;
-moz-animation: icon-animation-short 3.5s 1.5s 1;
animation: icon-animation-short 3.5s 1.5s 1;
}*/
/*controls logic*/
/*animated logos with complex svg segments*/
/*transitions*/
/*logos svg files that contain inverted path alternates */
/* call to action */
/* tables in snippets.... the devil */
/* tables in text */
/*testimonial snippet */
/*for inverting images*/
/**/
/*code blocks*/
/* round line arrows */
/*fix icon inversion*/
/*body:hover .corner svg{transform: translate(30%, 30%)}*/
}
.reveal.reveal[role="application"] > .backgrounds > .slide-background:not(.stack):first-child,
.reveal.reveal[role="application"] > .backgrounds > .stack:first-child > .slide-background:first-child,
.reveal.reveal[role="application"] .slides > .pdf-page:not(.stack):first-child .slide-background,
.reveal.reveal[role="application"] .slides > .stack:first-child > .pdf-page:first-child .slide-background {
background-color: #900;
color: #fff;
background-size: cover;
background-repeat: no-repeat;
background-position: 50% 50%;
background-image: linear-gradient(-45deg, #8e0000 20%, #820000 20%, #990000 85%, #890000 85%);
min-height: 100vh;
}
.reveal.reveal[role="application"] > .backgrounds > .slide-background:not(.stack):first-child.has-light-background,
.reveal.reveal[role="application"] > .backgrounds > .stack:first-child > .slide-background:first-child.has-light-background,
.reveal.reveal[role="application"] .slides > .pdf-page:not(.stack):first-child .slide-background.has-light-background,
.reveal.reveal[role="application"] .slides > .stack:first-child > .pdf-page:first-child .slide-background.has-light-background {
background-image: none;
}
.reveal.reveal .slides > .section:first-child,
.reveal.reveal[role="application"] > .slides > .section:first-child .sl-block {
color: #fff;
}
.reveal .name {
white-space: nowrap;
}
.reveal .reveal,
.reveal .sl-block,
.reveal .sl-block-content,
.reveal .sl-block-content div,
.reveal .sl-block-content p,
.reveal .sl-block-content h1,
.reveal .sl-block-content h2,
.reveal .sl-block-content h3,
.reveal .sl-block-content h4 {
font-family: "Overpass 2", overpass, "Hiragino Kaku Gothic", "Hiragino Kaku Gothic ProN", "ヒラギノ角ゴ Pro W3", sans-serif;
}
.reveal .future .sl-block-content,
.reveal .past .sl-block-content {
transition: none !important;
}
.reveal section,
.reveal.reveal .has-dark-background,
.reveal section.background-shade-dark {
color: #fff;
}
.reveal.reveal .has-dark-background a {
color: #eee;
}
.reveal.reveal .has-dark-background a:hover {
color: #fff;
}
.reveal .backgrounds {
background: #f3f4f4;
}
.reveal .slide-background {
background-size: cover;
background-position: 50% 50%;
background-repeat: no-repeat;
}
.reveal .slide-background.has-light-background {
/*background-image: url(//s3.amazonaws.com/media-p.slid.es/uploads/team-32/images/1297460/standard-background.svg);*/
}
.reveal .backgrounds .paint-it-red {
background-color: #c00 !important;
-moz-background-blend-mode: multiply;
-webkit-background-blend-mode: multiply;
-ms-background-blend-mode: multiply;
background-blend-mode: multiply;
}
.reveal .paint-it-red {
color: #fff;
}
.reveal .has-dark-background .icon.stroked path,
.reveal section.background-shade-dark .icon.stroked path,
.reveal section.light-foreground .icon.stroked path {
stroke: #fff !important;
}
.reveal .has-dark-background .redhat-product-logotype path,
.reveal section.background-shade-dark .redhat-product-logotype path,
.reveal section.light-foreground .redhat-product-logotype path {
fill: #ffffff;
}
.reveal .has-dark-background text.logotext,
.reveal section.background-shade-dark text.logotext,
.reveal section.light-foreground text.logotext,
.reveal .has-dark-background .logotext text,
.reveal section.background-shade-dark .logotext text,
.reveal section.light-foreground .logotext text,
.reveal .has-dark-background path.logotext,
.reveal section.background-shade-dark path.logotext,
.reveal section.light-foreground path.logotext,
.reveal .has-dark-background path.logotype,
.reveal section.background-shade-dark path.logotype,
.reveal section.light-foreground path.logotype,
.reveal .has-dark-background .logotext path,
.reveal section.background-shade-dark .logotext path,
.reveal section.light-foreground .logotext path {
fill: #fff !important;
}
.reveal .has-dark-background .closing-logo .logotext,
.reveal section.background-shade-dark .closing-logo .logotext,
.reveal section.light-foreground .closing-logo .logotext,
.reveal .has-dark-background .redhat-logo .logotext,
.reveal section.background-shade-dark .redhat-logo .logotext,
.reveal section.light-foreground .redhat-logo .logotext {
fill: #ffffff !important;
}
.reveal .has-light-background .icon.stroked path {
stroke: currentcolor;
}
.reveal .has-light-background .redhat-logo .logotext,
.reveal .has-light-background .redhat-logo .logohat {
fill: #000000 !important;
}
.reveal .sl-block-content ol li {
position: relative;
padding-bottom: 0.5em;
}
.reveal .sl-block-content ol li > p:first-child {
margin: 0;
}
.reveal .sl-block-content ol > li::before {
margin-left: -2.5em;
}
.reveal .sl-block-content > ol > li:before {
float: left;
text-align: center;
box-shadow: inset 0 0 0 0.1em;
border-radius: 50%;
}
.reveal .sl-block-content ol {
counter-reset: section;
list-style-type: none;
margin: 0 0 0 2.5em;
display: block;
}
.reveal .sl-block-content ol ol {
margin-top: 0.5em;
}
.reveal .sl-block-content ol > li:before {
font-weight: 400;
display: inline-block;
width: 1.75em;
height: 1.75em;
line-height: 1.75em;
text-align: center;
letter-spacing: 0;
font-size: 0.75em;
margin: 0 0.75em 0 -2.5em;
counter-increment: section;
content: counters(section, ".") " ";
white-space: nowrap;
}
.reveal .sl-block-content > ol > li ol li:before {
opacity: 0.5;
text-align: left;
box-shadow: none;
letter-spacing: 0.1em;
}
.reveal .sl-block-content > ol > li > ol > li > ol > li:before {
width: 4em;
left: -3em;
font-size: 0.75em;
}
.reveal .has-dark-background .sl-block-content > ol > li:before {
color: currentcolor;
background-color: rgba(0, 0, 0, 0.1);
box-shadow: inset 0 0 0 0.2em rgba(0, 0, 0, 0.2);
font-weight: 500;
letter-spacing: -0.05em;
}
.reveal .sl-block-content > ol ol ol li:before {
opacity: 1;
font-size: 0.55em !important;
width: 3.5em !important;
}
.reveal .sl-block-content > ol ol ol {
margin-left: 1.5em !important;
}
.reveal .uppercase {
text-transform: uppercase;
}
.reveal .sl-block[data-block-type="text"] > .initial h1,
.reveal .sl-block[data-block-type="text"] > .initial h2,
.reveal .sl-block[data-block-type="text"] > .initial h3 {
text-transform: initial;
}
.reveal .force-mono text,
.reveal .force-mono tspan,
.reveal .force-mono polygon,
.reveal .force-mono path,
.reveal .force-mono rect,
.reveal .force-mono ellipse {
fill: currentcolor !important;
}
.reveal .force-red .stroked path {
stroke: #c00;
}
.reveal .force-red,
.reveal .force-red text,
.reveal .force-red tspan,
.reveal .force-red polygon,
.reveal .force-red path,
.reveal .force-red rect,
.reveal .force-red ellipse {
color: #c00;
fill: currentcolor !important;
}
.reveal .force-red .stroked {
fill: none;
stroke: #c00;
}
.reveal .background-shade-dark .sl-block {
color: #fff;
}
.reveal .dark-foreground text.logotext,
.reveal section.background-shade-light text.logotext,
.reveal section.dark-foreground text.logotext,
.reveal .dark-foreground .logotext text,
.reveal section.background-shade-light .logotext text,
.reveal section.dark-foreground .logotext text,
.reveal .dark-foreground path.logotext,
.reveal section.background-shade-light path.logotext,
.reveal section.dark-foreground path.logotext,
.reveal .dark-foreground path.logotype,
.reveal section.background-shade-light path.logotype,
.reveal section.dark-foreground path.logotype,
.reveal .dark-foreground .logotext path,
.reveal section.background-shade-light .logotext path,
.reveal section.dark-foreground .logotext path,
.reveal .dark-foreground .product,
.reveal section.background-shade-light .product,
.reveal section.dark-foreground .product {
fill: currentcolor !important;
}
.reveal .dark-foreground .redhat-logo .logotext,
.reveal section.background-shade-light .redhat-logo .logotext,
.reveal section.dark-foreground .redhat-logo .logotext {
fill: currentcolor !important;
}
.reveal .slide-background.background-shade-dark:after {
content: "";
display: block;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
width: 100%;
height: 100%;
background-color: rgba(40, 40, 40, 0.8);
}
.reveal .slide-background.background-shade-light:after {
content: "";
display: block;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
width: 100%;
height: 100%;
background-color: rgba(255, 255, 255, 0.8);
}
.reveal .slides section {
text-align: left;
}
.reveal .slides section h1 {
line-height: 1em;
font-weight: 700 ;
font-size: 3em ;
}
.reveal .slides section h2 {
font-size: 2em;
font-weight: 400 ;
line-height: 1.15em;
}
.reveal .slides section h3 {
font-weight: 700 ;
font-size: 1em ;
line-height: 1.25em;
}
.reveal .slides section p {
margin-bottom: 0.5em;
}
.reveal .slides section blockquote {
font-style: normal;
box-shadow: none;
}
.reveal .progress {
background-color: transparent;
}
.reveal .progress span {
background-color: #5e6a71;
}
.reveal .absolute-element svg {
position: absolute;
top: 0;
left: 0;
right: 0;
width: 100% !important;
height: 100% !important;
}
.reveal .icon.stroked {
width: 282px;
height: 282px;
}
.reveal .icon.stroked.icon-arrow path {
stroke-width: 4px !important;
}
.reveal .icon.stroked path {
fill: none;
stroke-width: 1.5px;
transition-delay: 0.5s !important;
stroke-dashoffset: 0;
stroke-width: 1.5;
stroke-linecap: round;
stroke-linejoin: round;
stroke: currentcolor;
}
.reveal .icon.stroked path.long {
stroke-dasharray: 420,420;
transition: 2.5s all ease;
}
.reveal .icon.stroked path.longer {
stroke-dasharray: 512,512;
transition: 2.5s all ease;
}
.reveal .icon.stroked path.short {
stroke-dasharray: 90,90;
transition: 5s all ease;
}
.reveal .icon.stroked path.shortest {
stroke-dasharray: 5,5;
transition: 2s all ease;
}
.reveal .icon.stroked path.round {
stroke-linecap: round ;
stroke-linejoin: round ;
}
.reveal .icon.stroked path.virtual {
transition: 0.5s all ease;
stroke-dasharray: 1.1, 3;
stroke-linecap: round ;
}
.reveal .icon.stroked path.dashed {
stroke-dasharray: 3, 3;
}
.reveal .icon.stroked path.hand {
stroke-linecap: round;
}
.reveal .present path.virtual {
-webkit-animation: virtual-outline 60s infinite linear;
-moz-animation: virtual-outline 60s infinite linear;
animation: virtual-outline 60s infinite linear;
}
@-webkit-keyframes virtual-outline {
0% {
stroke-dashoffset: 0;
}
100% {
stroke-dashoffset: 512;
}
}
@-moz-keyframes virtual-outline {
0% {
stroke-dashoffset: 0;
}
100% {
stroke-dashoffset: 512;
}
}
@keyframes virtual-outline {
0% {
stroke-dashoffset: 0;
}
100% {
stroke-dashoffset: 512;
}
}
.reveal a {
box-shadow: 0 0.066666em;
}
.reveal .overview section.present {
border: 12px solid white !important;
box-shadow: 0 0 0 10px white, inset 0 0 0 6px rgba(0, 0, 0, 0.2);
}
.reveal .rh-pattern {
width: 256px;
height: 256px;
}
.reveal .rh-pattern path {
transition: all 0.5s ease;
}
.reveal .future .rh-pattern path {
stroke-dasharray: 0, 85 !important;
}
.reveal .present .rh-pattern path {
stroke-dasharray: 80, 0 !important;
}
.reveal div[data-block-type="snippet"] .sl-block-content > svg,
.reveal div[data-block-type="snippet"] > .sl-block-content > svg,
.reveal div[data-block-type="snippet"] .icon,
.reveal div[data-block-type="snippet"] .product {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
width: 100%;
height: 100%;
}
.reveal div[data-block-type="snippet"] .sl-block-content > svg:not(:last-child) {
position: relative;
}
.reveal div[data-block-type="snippet"] .icon {
top: -15%;
right: -15%;
bottom: -15%;
left: -15%;
width: 130%;
height: 130%;
}
.reveal div[data-block-type="snippet"] {
min-width: 60px !important;
}
.reveal div[data-block-type="text"] {
font-size: 20px;
}
.reveal .triangle-element,
.reveal .triangle-element * {
user-select: none;
}
.reveal .has-light-background .closing-logo.logotype path {
fill: black !important;
}
@-webkit-keyframes closing-animation {
0% {
-webkit-transform: scale(4) translate(40%);
transform: scale(4) translate(40%);
opacity: 0;
}
80% {
-webkit-transform: scale(1) translate(30%);
transform: scale(1) translate(30%);
}
}
@-moz-keyframes closing-animation {
0% {
-webkit-transform: scale(4) translate(40%);
transform: scale(4) translate(40%);
opacity: 0;
}
80% {
-webkit-transform: scale(1) translate(30%);
transform: scale(1) translate(30%);
}
}
@-o-keyframes closing-animation {
0% {
-webkit-transform: scale(4) translate(40%);
transform: scale(4) translate(40%);
opacity: 0;
}
80% {
-webkit-transform: scale(1) translate(30%);
transform: scale(1) translate(30%);
}
}
@keyframes closing-animation {
0% {
-webkit-transform: scale(4) translate(40%);
transform: scale(4) translate(40%);
opacity: 0;
}
80% {
-webkit-transform: scale(1) translate(30%);
transform: scale(1) translate(30%);
}
}
.reveal .present .closing-logo.icon {
-webkit-animation: closing-animation 1.5s 1;
-moz-animation: closing-animation 1.5s 1;
-o-animation: closing-animation 1.5s 1;
animation: closing-animation 1.5s 1;
}
.reveal .present .closing-logo.logotype {
-webkit-animation: closing-text-animation 1.8s 1;
-moz-animation: closing-text-animation 1.8s 1;
-o-animation: closing-text-animation 1.8s 1;
animation: closing-text-animation 1.8s 1;
}
@-webkit-keyframes closing-text-animation {
0% {
opacity: 0;
-webkit-transform: translate(-10%);
transform: translate(-10%);
}
70% {
-webkit-transform: translate(-10%);
transform: translate(-10%);
opacity: 0;
}
100% {
transform: none;
opacity: 1;
-webkit-transform: none;
}
}
@-moz-keyframes closing-text-animation {
0% {
opacity: 0;
-webkit-transform: translate(-10%);
transform: translate(-10%);
}
70% {
-webkit-transform: translate(-10%);
transform: translate(-10%);
opacity: 0;
}
100% {
transform: none;
opacity: 1;
-webkit-transform: none;
}
}
@keyframes closing-text-animation {
0% {
opacity: 0;
-webkit-transform: translate(-10%);
transform: translate(-10%);
}
70% {
-webkit-transform: translate(-10%);
transform: translate(-10%);
opacity: 0;
}
100% {
transform: none;
opacity: 1;
-webkit-transform: none;
}
}
.reveal .brand-pattern-paths path,
.reveal .pattern-path {
stroke-width: 1;
fill: none;
}
.reveal .brand-pattern-paths path {
fill: none !important;
}
.reveal pattern {
patterntransform: scale(2) !important;
}
.reveal pattern.normal use {
stroke: currentcolor;
fill: none;
}
.reveal pattern.light use {
stroke: #fff !important;
fill: none;
}
.reveal pattern.dark use {
stroke: #000 !important;
fill: none;
}
.reveal .brand-pattern {
min-width: 40px;
min-height: 40px;
position: absolute;
top: 0 ;
left: 0 ;
right: 0;
bottom: 0;
width: 100%;
height: 100%;
}
.reveal .brand-pattern path,
.reveal .brand-pattern rect {
width: 100% !important;
height: 100%;
}
.reveal .brand-pattern.corporate {
fill: url(#pattern-corporate);
}
.reveal #pattern-corporate-2 use {
stroke: #dd0000;
}
.reveal #pattern-corporate use {
stroke: #cc0000;
}
.reveal section,
.reveal .slide-background {
-webkit-backface-visibility: hidden;
-ms-backface-visibility: hidden;
backface-visibility: hidden;
}
.reveal .slides > section.transition-slide,
.reveal .slides > section.transition-slide + section.future,
.reveal .slides > section.transition-slide + section.present,
.reveal .backgrounds > .slide-background.transition-slide,
.reveal .backgrounds > .slide-background.transition-slide + .slide-background.future,
.reveal .backgrounds > .slide-background.transition-slide + .slide-background.present {
transition: all 1s ease !important;
}
.reveal .backgrounds > .slide-background.transition-slide {
opacity: 1 ;
}
.reveal .backgrounds > .slide-background.transition-slide.past {
z-index: 99;
-webkit-transform: translate(-100%, 0);
-ms-transform: translate(-100%, 0);
transform: translate(-100%, 0);
}
.reveal .backgrounds > .slide-background.transition-slide.future,
.reveal .backgrounds > .slide-background.transition-slide.present + .slide-background.future {
-webkit-transform: translate(100%, 0);
-ms-transform: translate(100%, 0);
transform: translate(100%, 0);
}
.reveal .slides > section.transition-slide.past {
z-index: 99;
-webkit-transform: translate(-150%, 0);
-ms-transform: translate(-150%, 0);
transform: translate(-150%, 0);
visibility: hidden;
}
.reveal .slides > section.transition-slide.future,
.reveal .slides > section.transition-slide.future + section {
-webkit-transform: translate(150%, 0);
-ms-transform: translate(150%, 0);
transform: translate(150%, 0);
visibility: hidden;
}
.reveal .slides > section.transition-slide-up,
.reveal .slides > section.transition-slide-up + section.future,
.reveal .slides > section.transition-slide-up + section.present,
.reveal .backgrounds > .slide-background.transition-slide-up,
.reveal .backgrounds > .slide-background.transition-slide-up + .slide-background.future .backgrounds > .slide-background.transition-slide-up + .slide-background.present {
transition: all 1s ease !important;
}
.reveal .backgrounds > .slide-background.transition-slide-up {
opacity: 1 ;
}
.reveal .backgrounds > .slide-background.transition-slide-up.past {
z-index: 99;
-webkit-transform: translate(0, -100%);
-ms-transform: translate(0, -100%);
transform: translate(0, -100%);
}
.reveal .backgrounds > .slide-background.transition-slide-up.future,
.reveal .backgrounds > .slide-background.transition-slide-up.present + .slide-background.future {
-webkit-transform: translate(0, 100%);
-ms-transform: translate(0, 100%);
transform: translate(0, 100%);
}
.reveal .slides > section.transition-slide-up.past {
z-index: 99;
-webkit-transform: translate(0, -150%);
-ms-transform: translate(0, -150%);
transform: translate(0, -150%);
visibility: hidden;
}
.reveal .slides > section.transition-slide-up.future,
.reveal .slides > section.transition-slide-up.present + section {
-webkit-transform: translate(0, 150%);
-ms-transform: translate(0, 150%);
transform: translate(0, 150%);
visibility: hidden;
}
.reveal .slides > section.transition-zoom-in,
.reveal .slides > section.transition-zoom-in + section.future,
.reveal .slides > section.transition-zoom-in + section.present,
.reveal .backgrounds > .slide-background.transition-zoom-in,
.reveal .backgrounds > .slide-background.transition-zoom-in + .slide-background.future .backgrounds > .slide-background.transition-zoom-in + .slide-background.present {
-webkit-transition: all 1s ease !important;
-moz-transition: all 1s ease !important;
transition: all 1s ease !important;
}
.reveal .backgrounds > .slide-background.transition-zoom-in.past {
opacity: 0 !important;
-webkit-transform: scale(1.5);
-ms-transform: scale(0.1 0.5);
transform: scale(1.5);
}
.reveal .backgrounds > .slide-background.transition-zoom-in.future,
.reveal .backgrounds > .slide-background.transition-zoom-in.present + .slide-background.future {
opacity: 0 !important;
-webkit-transform: scale(0.01);
-ms-transform: scale(0.01);
transform: scale(0.01);
}
.reveal .past {
z-index: -1;
opacity: 0 !important;
}
.reveal .present + .slide-background.future {
z-index: 99;
}
.reveal .slides > section.transition-zoom-in.past {
z-index: 99;
-webkit-transform: scale(1.5);
-ms-transform: scale(1.5);
transform: scale(1.5);
visibility: hidden;
}
.reveal .slides > section.transition-zoom-in.future {
-webkit-transform: scale(0.1);
-ms-transform: scale(0.1);
transform: scale(0.1);
visibility: hidden;
}
@-webkit-keyframes icon-animation-long {
0% {
stroke-dashoffset: 420;
stroke-width: 0.5px;
}
}
@-moz-keyframes icon-animation-long {
0% {
stroke-dashoffset: 420;
stroke-width: 0.5px;
}
}
@keyframes icon-animation-long {
0% {
stroke-dashoffset: 420;
stroke-width: 0.5px;
}
}
@-webkit-keyframes icon-animation-short {
0% {
stroke-dashoffset: 90;
}
}
@-moz-keyframes icon-animation-short {
0% {
stroke-dashoffset: 90;
}
}
@keyframes icon-animation-short {
0% {
stroke-dashoffset: 90;
}
}
.reveal .present .animate.icon.stroked path,
.reveal .present .animate .icon.stroked path,
.reveal .fragment .icon.stroked path {
animation: 0;
-moz-animation: 0;
-webkit-animation: 0;
display: none;
}
.reveal .present .animate.icon.stroked path.long,
.reveal .present .animate .icon.stroked path.long,
.reveal .fragment.visible .icon.stroked path.long {
display: block;
stroke-width: 2px ;
-webkit-animation: icon-animation-long 3.5s 0.5s 1;
-moz-animation: icon-animation-long 3.5s 0.5s 1;
animation: icon-animation-long 3.5s 0.5s 1;
}
.reveal .present .animate.icon.stroked path.short,
.reveal .present .animate .icon.stroked path.short,
.reveal .fragment.visible .icon.stroked path.short {
display: block;
-webkit-animation: icon-animation-short 3.5s 0.5s 1 !important;
-moz-animation: icon-animation-short 3.5s 0.5s 1 !important;
animation: icon-animation-short 3.5s 0.5s 1 !important;
}
.reveal .triangle-element {
transition: all 0.4s cubic-bezier(0.21, 0.9, 0.55, 1) 5s;
}
.reveal.reveal:hover .triangle-element {
transition: all 1s cubic-bezier(0.21, 0.9, 0.55, 1.16) 0s !important;
top: 100% !important;
left: 100% !important;
opacity: 0.95;
}
.reveal .has-dark-background .only-dark {
display: none;
}
.reveal .has-light-background .only-light {
display: none;
}
.reveal .thinner .icon.stroked path {
stroke-width: 1px !important;
}
.reveal .thinnest .icon.stroked path {
stroke-width: 0.05em !important;
}
.reveal .thicker .icon.stroked path {
stroke-width: 3px !important;
}
.reveal .thickest .icon.stroked path {
stroke-width: 4px !important;
}
.reveal .angle {
-ms-transform: rotate(-45deg);
-moz-transform: rotate(-45deg);
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg);
}
.reveal .rangle {
-ms-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-webkit-transform: rotate(45deg);
transform: rotate(45deg);
}
.reveal .sl-block > .vertical {
-ms-transform: rotate(-90deg);
-moz-transform: rotate(-90deg);
-webkit-transform: rotate(-90deg);
transform: rotate(-90deg);
}
.reveal .skewed {
transition: all 1s cubic-bezier(0.13, 0.81, 0.08, 1);
-moz-transform: skew(-45deg, 0);
-ms-transform: skew(-45deg, 0);
-webkit-transform: skew(-45deg, 0);
transform: skew(-45deg, 0);
}
.reveal .future .skewed {
margin-left: -800%;
opacity: 0;
}
.reveal .past .skewed {
margin-left: 800%;
opacity: 0;
}
.reveal .item-label,
.reveal .item-box {
letter-spacing: 0em;
font-weight: 500;
}
.reveal .epic-content-box {
height: 100%;
width: 100%;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
.reveal .has-dark-background .epic-content-box {
box-shadow: inset 0 0 0.51em rgba(0, 0, 0, 0.25), 0 0.05em 0.05em rgba(255, 255, 255, 0.1);
background-color: rgba(0, 0, 0, 0.15);
}
.reveal .has-light-background .epic-content-box {
box-shadow: inset 0 0 0.2em rgba(255, 255, 255, 0.5), 0 0.06666em 0.555em 0 rgba(0, 0, 0, 0.12);
}
.reveal .controls {
bottom: 1%;
right: 1%;
}
.reveal .controls button {
opacity: 0;
}
.reveal .controls button.enabled {
opacity: 1;
}
.reveal .controls {
opacity: 0 !important;
transition: opacity 0.5s ease 4.8s, transform 0.5s ease 4.8s;
transform: scale(0.4);
}
.reveal.reveal:hover .controls {
transform: scale(1);
opacity: 1 !important;
transition: opacity 0.5s ease 0s, transform 0.5s ease 0s;
}
.reveal .backgrounds {
transition-property: height;
transition-duration: 1s;
perspective: 1000px;
transform-style: preserve-3d;
}
.reveal .complex-logo {
min-height: 70px;
min-width: 70px;
width: 100%;
}
.reveal .complex-logo,
.reveal .complex-logo svg,
.reveal .complex-logo > div {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
width: 100%;
height: 100%;
}
.reveal .complex-logo > div.line-icon,
.reveal .complex-logo svg > div.line-icon,
.reveal .complex-logo > div > div.line-icon,
.reveal .complex-logo > div.logomark,
.reveal .complex-logo svg > div.logomark,
.reveal .complex-logo > div > div.logomark {
transform-origin: 12% 50%;
}
.reveal .animated .complex-logo div {
transition: all 0.5s ease;
}
.reveal .animated .complex-logo div.line-icon {
transition-delay: 2s;
}
.reveal .animated .complex-logo div.line-icon path {
transition: all 1s ease 0.52s;
stroke-dasharray: 100 ,10;
}
.reveal .animated .complex-logo div.event-name {
transition-delay: 1s;
}
.reveal .animated .complex-logo div.location {
transition-delay: 1.4s;
}
.reveal .future .animated .complex-logo > div {
transition: none;
}
.reveal .future .animated .complex-logo > div.line-icon path {
stroke-dasharray: 0 ,100;
transition: none;
}
.reveal .future .animated .complex-logo {
/*.line-icon{transform:rotate(30deg); opacity:0;}*/
}
.reveal .future .animated .complex-logo .logomark {
transform: translate(0, -20%);
}
.reveal .future .animated .complex-logo .location {
transform: translate(0, 0.5em);
opacity: 0;
}
.reveal .future .animated .complex-logo .event-name {
opacity: 0;
transform: translate(-0.6em, 0);
}
.reveal .lowercase {
text-transform: lowercase;
}
.reveal .pop-in.fragment {
-webkit-transform: scale(0.2);
-moz-transform: scale(0.2);
-ms-transform: scale(0.2);
transform: scale(0.2);
-webkit-transition: 2s ease 0.25s;
-moz-transition: 2s ease 0.25s;
-ms-transition: 2s ease 0.25s;
transition: 2s ease 0.25s;
-webkit-animation-delay: 0.66s;
-moz-animation-delay: 0.66s;
-ms-animation-delay: 0.66s;
animation-delay: 0.66s;
}
.reveal .pop-in.fragment.visible {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
transform: scale(1);
}
.reveal .pop-in.fragment.current-fragment {
color: #c22;
}
.reveal .grow-width {
-webkit-transition: all 0.5s ease 0.2s;
-moz-transition: all 0.5s ease 0.2s;
-o-transition: all 0.5s ease 0.2s;
-ms-transition: all 0.5s ease 0.2s;
transition: all 0.5s ease 0.2s;
}
.reveal .future .grow-width {
width: 0% !important;
-webkit-transition: none;
-moz-transition: none;
-o-transition: none;
-ms-transition: none;
transition: none;
}
.reveal .stampit {
-webkit-transition: all 1s cubic-bezier(0.79, 0.53, 0.46, 1.3) 1s;
-moz-transition: all 1s cubic-bezier(0.79, 0.53, 0.46, 1.3) 1s;
-ms-transition: all 1s cubic-bezier(0.79, 0.53, 0.46, 1.3) 1s;
transition: all 1s cubic-bezier(0.79, 0.53, 0.46, 1.3) 1s;
}
.reveal .future .stampit {
-webkit-transform: rotate(-12deg) scale(2);
-moz-transform: rotate(-12deg) scale(2);
-ms-transform: rotate(-12deg) scale(2);
transform: rotate(-12deg) scale(2);
-webkit-transition: none;
-moz-transition: none;
-ms-transition: none;
transition: none;
opacity: 0;
}
.reveal .headshot img {
border-radius: 50%;
border: 4px solid #c00 !important;
}
.reveal .condensed {
letter-spacing: 0.02em;
}
.reveal .condensed li {
margin-bottom: 1em ;
}
.reveal .has-light-background .sl-block .has-dark-background > svg.redhat-logo .logotext {
fill: #ffffff !important;
}
.reveal .has-light-background .sl-block .reversed.redhat-logo .logotext,
.reveal .has-light-background .sl-block .reversed .redhat-logo .logotext,
.reveal .has-light-background .sl-block .has-dark-background > .redhat-logo .logotext {
fill: #ffffff !important;
}
.reveal .has-dark-background .sl-block .reversed.redhat-logo .logotext,
.reveal .has-dark-background .sl-block .reversed .redhat-logo .logotext,
.reveal .has-dark-background .sl-block .has-light-background > .redhat-logo .logotext {
fill: #000000 !important;
}
.reveal .has-dark-background .has-light-background .logo .only-dark path,
.reveal .has-light-background .mono.redhat-logo path {
fill: #000000 !important;
}
.reveal .has-dark-background .mono.redhat-logo path {
fill: #ffffff;
}
.reveal .has-dark-background .logo .only-dark {
display: block;
}
.reveal .has-light-background .logo .only-light {
display: block;
}
.reveal .has-light-background .logo .only-dark {
display: none;
}
.reveal .has-dark-background .logo .only-light {
display: none;
}
.reveal .has-light-background .reversed svg path {
fill: #ffffff !important;
}
.reveal .has-dark-background .reversed svg path {
fill: currentcolor;
}
.reveal .has-dark-background .has-light-background .logo .only-light,
.reveal .has-dark-background .reversed .logo .only-dark {
display: block;
}
.reveal .has-light-background .has-dark-background .logo .only-dark,
.reveal .has-light-background .logo .only-light {
display: block;
}
.reveal .has-light-background .has-dark-background .redhat-logo .only-dark,
.reveal .has-light-background .redhat-logo .only-light {
fill: #ffffff !important;
}
.reveal .has-light-background .has-dark-background .logo .only-light,
.reveal .has-light-background .logo .only-dark,
.reveal .has-dark-background .has-light-background .logo .only-dark,
.reveal .has-dark-background .logo .only-light {
display: none;
}
.reveal .future .fade-up,
.reveal .future .fade-down,
.reveal .future .fade-left,
.reveal .future .fade-right,
.reveal .future .fade-zoom {
-webkit-transition: none;
transition: none;
opacity: 0;
filter: alpha(opacity=0);
}
.reveal .future .fade-up,
.reveal .fade-up.fragment {
-webkit-transform: translate(0, 2em);
-ms-transform: translate(0, 2em);
transform: translate(0, 2em);
opacity: 0;
filter: alpha(opacity=0);
}
.reveal .future .fade-down,
.reveal .fade-down.fragment {
-webkit-transform: translate(0, -2em);
-ms-transform: translate(0, -2em);
transform: translate(0, -2em);
opacity: 0;
filter: alpha(opacity=0);
}
.reveal .future .fade-left,
.reveal .fade-left.fragment {
-webkit-transform: translate(2em, 0);
-ms-transform: translate(2em, 0);
transform: translate(2em, 0);
opacity: 0;
filter: alpha(opacity=0);
}
.reveal .future .fade-right,
.reveal .fade-right.fragment {
-webkit-transform: translate(-2em, 0);
-ms-transform: translate(-2em, 0);
transform: translate(-2em, 0);
opacity: 0;
filter: alpha(opacity=0);
}
.reveal .future .fade-zoom,
.reveal .fade-zoom.fragment {
-webkit-transform: scale(0.1);
-ms-transform: scale(0.1);
transform: scale(0.1);
opacity: 0;
filter: alpha(opacity=0);
}
.reveal .future .fade-in {
transition: none;
opacity: 0;
}
.reveal .present .fade-in,
.reveal .present .fade-up,
.reveal .present .fade-down,
.reveal .present .fade-left,
.reveal .present .fade-right,
.reveal .present .fade-zoom {
-webkit-transition: all 0.5s ease 0.5s;
transition: all 0.5s ease 0.5s;
opacity: 1;
filter: alpha(opacity=100);
}
.reveal .present .fragment.visible.fade-up,
.reveal .present .fragment.visible.fade-down,
.reveal .present .fragment.visible.fade-left,
.reveal .present .fragment.visible.fade-right,
.reveal .present .fragment.visible.fade-zoom {
-webkit-transform: none ;
-ms-transform: none ;
transform: none ;
opacity: 1;
filter: alpha(opacity=100);
}
.reveal .sl-block {
font-family: "Overpass 2", "Hiragino Kaku Gothic", "Hiragino Kaku Gothic ProN", "ヒラギノ角ゴ Pro W3", Overpass, sans-serif !important;
}
.reveal .has-light-background .icon.stroked {
color: currentcolor;
}
.reveal .has-dark-background .icon.stroked path {
stroke: currentcolor;
}
.reveal .has-dark-background .only-light-background {
display: none !important;
}
.reveal .has-dark-background .only-dark-background {
display: block !important;
}
.reveal a.call-to-action:hover {
background-color: #d00 !important;
box-shadow: 0 0.5em 1em rgba(0, 0, 0, 0.05) !important;
text-shadow: none !important;
}
.reveal .sl-block[data-block-type="snippet"] table {
width: 100% !important;
max-width: 100% !important;
}
.reveal .sl-block[data-block-type="snippet"] table td {
border-color: currentcolor !important;
}
.reveal .sl-block[data-block-type="snippet"] table td {
text-align: inherit !important;
}
.reveal .sl-block[data-block-type="text"] table {
width: 100%;
}
.reveal .sl-block[data-block-type="text"] table td {
border-color: currentcolor;
}
.reveal .sl-block[data-block-type="text"] table td {
text-align: inherit;
}
.reveal.reveal .sl-block[data-block-type="image"] .person {
border-radius: 50%;
position: relative !important;
background-color: transparent;
height: auto !important;
}
.reveal.reveal .sl-block[data-block-type="image"] .person:before {
content: "" !important;
display: block !important;
padding-top: 100% ;
position: relative !important ;
/* 4:3 aspect ratio */
}
.reveal.reveal .sl-block[data-block-type="image"] .person > img {
position: absolute ;
margin: 0 auto !important;
left: 0% ;
right: 0 ;
width: auto !important;
top: 0 ;
bottom: 0 ;
}
.reveal .present .delay-1 {
transition-delay: 0.1s;
}
.reveal .present .delay-2 {
transition-delay: 0.2s;
}
.reveal .present .delay-3 {
transition-delay: 0.3s;
}
.reveal .present .delay-4 {
transition-delay: 0.4s;
}
.reveal .present .delay-5 {
transition-delay: 0.5s;
}
.reveal .present .delay-6 {
transition-delay: 0.6s;
}
.reveal .present .delay-7 {
transition-delay: 0.7s;
}
.reveal .present .delay-8 {
transition-delay: 0.8s;
}
.reveal .present .delay-9 {
transition-delay: 0.9s;
}
.reveal .present .delay-10 {
transition-delay: 1s;
}
.reveal .present .delay-11 {
transition-delay: 1.1s;
}
.reveal .present .delay-12 {
transition-delay: 1.2s;
}
.reveal .present .delay-13 {
transition-delay: 1.3s;
}
.reveal .present .delay-14 {
transition-delay: 1.4s;
}
.reveal .present .delay-15 {
transition-delay: 1.5s;
}
.reveal .present .delay-16 {
transition-delay: 1.6s;
}
.reveal .present .delay-17 {
transition-delay: 1.7s;
}
.reveal .present .delay-18 {
transition-delay: 1.8s;
}
.reveal .present .delay-19 {
transition-delay: 1.9s;
}
.reveal .present .delay-20 {
transition-delay: 2s;
}
.reveal .present .delay-21 {
transition-delay: 2.1s;
}
.reveal .present .delay-22 {
transition-delay: 2.2s;
}
.reveal .present .delay-23 {
transition-delay: 2.3s;
}
.reveal .present .delay-24 {
transition-delay: 2.4s;
}
.reveal .present .delay-25 {
transition-delay: 2.5s;
}
.reveal .present .delay-26 {
transition-delay: 2.6s;
}
.reveal .present .delay-27 {
transition-delay: 2.7s;
}
.reveal .present .delay-28 {
transition-delay: 2.8s;
}
.reveal .present .delay-29 {
transition-delay: 2.9s;
}
.reveal .present .delay-30 {
transition-delay: 3s;
}
.reveal .present .delay-31 {
transition-delay: 3.1s;
}
.reveal .present .delay-32 {
transition-delay: 3.2s;
}
.reveal .present .delay-33 {
transition-delay: 3.3s;
}
.reveal .present .delay-34 {
transition-delay: 3.4s;
}
.reveal .present .delay-35 {
transition-delay: 3.5s;
}
.reveal .present .delay-36 {
transition-delay: 3.6s;
}
.reveal .present .delay-37 {
transition-delay: 3.7s;
}
.reveal .present .delay-38 {
transition-delay: 3.8s;
}
.reveal .present .delay-39 {
transition-delay: 3.9s;
}
.reveal .present .delay-40 {
transition-delay: 4s;
}
.reveal .light-foreground .sl-block * {
color: #fff;
}
.reveal .dark-foreground .sl-block * {
color: #000;
}
.reveal .has-dark-background .invert {
color: #000;
}
.reveal .has-light-background .invert * {
color: #fff;
}
.reveal .has-light-background .invert .only-light-background {
display: none ;
}
.reveal .has-light-background .invert .only-dark-background {
display: block !important;
}
.reveal .has-dark-background .invert .only-light-background {
display: block !important ;
}
.reveal .has-dark-background .invert .only-dark-background {
display: none !important;
}
.reveal .slide-number {
position: absolute !important;
opacity: 1;
right: 1em;
height: 28px;
min-width: 28px;
bottom: auto;
left: auto;
text-align: center;
font-size: 14px;
border-radius: 28px;
line-height: 28px;
color: white;
text-shadow: 0 0.1em 0.5em rgba(0, 0, 0, 0.4);
top: 1em;
font-family: "Overpass 2", Overpass, sans-serif;
font-weight: 500;
white-space: nowrap;
padding: 4px;
box-sizing: content-box;
}
.reveal .slide-number-delimiter {
margin: 0 1px;
}
html:not([data-mode="arrange"]) .reveal .present.in-3d-appear {
transform: translatez(0em) !important;
animation: none !important;
transition: transform 1s ease !important;
}
html:not([data-mode="arrange"]) .reveal .future.in-3d-appear {
transform: translatez(10em) rotateX(21deg) !important;
animation: none !important;
}
.reveal .no-filter img,
.reveal .no-filter {
filter: none !important;
-webkit-filter: none !important;
}
.reveal .present .fade-in-slow {
transition: all 5s ease;
}
.reveal .future .fade-in-slow {
transition: none;
opacity: 0;
}
.reveal .redhat-logo .logotext {
fill: #000 !important;
}
.reveal .has-dark-background .redhat-logo .logotext {
fill: #fff !important;
}
.reveal [data-block-type="table"] .sl-block-content {
font-size: 0.75em;
background-color: #c00;
color: #fff;
}
.reveal [data-block-type="table"] td {
background-color: #e5e5e5;
color: #333;
border-color: white;
}
.reveal div[data-block-type="table"] th {
font-weight: 500;
}
.reveal [data-block-type="table"] tr:nth-child(odd) td {
background-color: #f5f5f5;
color: #333;
}
.reveal .has-dark-background > [data-block-type="table"] td {
background-color: #131619;
color: #fff;
}
.reveal .has-dark-background > [data-block-type="table"] tr:nth-child(odd) td {
background-color: #232629;
color: #fff;
}
.reveal [data-block-type="code"],
.reveal .hljs {
background-color: white ;
color: rgba(55, 55, 55, 0.85) !important;
}
.reveal section .hljs {
background-color: white !important;
}
.reveal .has-dark-background [data-block-type="code"],
.reveal .has-dark-background .hljs {
background-color: #012736 !important;
color: rgba(255, 255, 255, 0.85) !important;
}
.reveal [data-block-type="code"] pre {
letter-spacing: 0.015em;
line-height: 1.5em;
}
.reveal .has-light-background[data-block-type="code"] pre,
.reveal [data-block-type="code"] pre {
background-color: white ;
color: currentcolor;
padding: 1em !important;
}
.reveal .has-dark-background [data-block-type="code"] pre {
background-color: #012736;
}
.reveal .hljs,
.reveal pre,
.reveal code {
font-family: 'Overpass Mono', monospace !important;
font-weight: 200 !important;
}
.reveal .hljs-literal {
color: #ffb612 !important;
}
.reveal .hljs-keyword {
color: #ffb612;
font-weight: 700 !important;
}
.reveal .hljs-string {
color: #88c639;
font-weight: 700;
}
.reveal .hljs-comment {
color: #94a0a7 !important;
font-weight: 400 !important;
}
.reveal .hljs-params {
color: #028c98;
font-weight: 700;
}
.reveal .hljs-attr {
color: #EC7A08 !important;
}
.reveal .hljs-tag {
color: #7F5FAE !important;
}
.reveal .hljs-name {
color: #028c98 !important;
}
.reveal .hljs-string {
color: #7f5fae !important;
}
.reveal .hljs-comment {
color: rgba(125, 125, 125, 0.65) !important;
}
.reveal .hljs-number {
color: #4e9fdd !important;
}
.reveal .hljs-attribute {
color: #ec9e34 !important;
}
.reveal .hljs-variable {
color: #4e9fdd !important;
}
.reveal .hljs-built_in {
color: #ee1122 !important;
}
.reveal .hljs-selector-class {
color: #55aab2 !important;
}
.reveal [data-line-end-type="line-arrow"] line,
.reveal [data-line-start-type="line-arrow"] line,
.reveal [data-line-end-type="line-arrow"] path {
stroke-linecap: round;
stroke-linejoin: square;
}
.reveal div[data-block-type="line"] line[stroke="#000000"],
.reveal div[data-block-type="line"] path[stroke="#000000"] {
stroke: currentcolor;
}
.reveal [fill="none"] {
fill: none !important;
}
.reveal [fill="#a30000"] {
fill: #a00 !important;
}
.reveal [fill="#cc2029"],
.reveal [fill="#cb2027"],
.reveal [fill="#c00"] {
fill: #c00 !important;
}
.reveal [fill="#fff"] {
fill: #fff !important;
}
.reveal [fill="#6d6e70"] {
fill: #6d6e70 !important;
}
.reveal [fill="#231f20"] {
fill: currentcolor !important;
}
.reveal [fill="#efab1f"] {
fill: #efab1f !important;
}
.reveal [fill="#92d400"] {
fill: #92d400 !important;
}
.reveal .has-dark-background [fill="#6d6e70"] {
fill: #266272 !important;
}
.reveal .has-dark-background [fill="#fff"] {
fill: #555 !important;
}
.reveal .has-dark-background [fill="#fff"] {
fill: #333 !important;
}
.reveal .has-dark-background [stroke="#231f20"] {
stroke: currentcolor;
}
.reveal .has-dark-background [fill="#221F1F"],
.reveal .has-dark-background [fill="#221f1f"],
.reveal .has-dark-background [fill="#231F20"],
.reveal .has-dark-background [fill="#010101"] {
fill: white !important;
}
.reveal [data-inline-svg="true"] img {
display: none;
}
.reveal .product-logo path:nth-last-child(2) {
fill: #000;
}
.reveal .force-mono .product-logo path:nth-last-child(2) {
opacity: 0;
}
.reveal .corner {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
overflow: hidden;
z-index: 8;
}
.reveal .corner svg {
transition: all 0.75s ease 5s;
}
</style>
</head>
<body class="reveal-viewport theme-font-overpass2 theme-color-no-color">
<div class="reveal">
<div class="slides">
<section data-background-color="#b21a0f" data-background-image="container-runtimes-27/5e1a7c37f8b075137176a16db5edc490.svg" data-background-size="cover" data-id="104124bc9471640953b625b5574edf7d" data-background-position="50% 50%">
<div class="sl-block" data-block-type="text" style="height: auto; width: 852px; left: 108px; top: 244px;" data-block-id="d47113ddc5922a083caff91ea62b4024"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 11;">
<h1 style="color:rgb(209, 212, 211)">CONTAINer Runtimes</h1>
<h3>Draw Some Lines</h3>
<p> </p>
<p>Devconf.IN 2019 Bangalore, IN</p>
<p style="color:rgb(209, 212, 211)">Vincent Batts @vbatts</p>
</div></div>
</section><section data-background-color="#efa737" data-background-image="container-runtimes-27/60672f0849c5b758b11dc0905dc42c02.svg" data-id="43c67a8fd2abdb057ed6d2fbfd010939">
<div class="sl-block" data-block-type="image" style="min-width: 4px; min-height: 4px; width: 478.222px; height: 269px; left: 241px; top: 389px;" data-block-id="7e8f21afa8ae97d7f7a463287afa0887"><div class="sl-block-content" style="z-index: 11;"><img data-natural-width="320" data-natural-height="180" data-lazy-loaded="" data-src="container-runtimes-27/339e84e5deca8af62480a1dc3fb7af96.gif"></div></div>
<div class="sl-block" data-block-type="code" style="min-width: 30px; min-height: 30px; width: 896px; height: 356px; left: 47px; top: 15px;" data-block-id="d978286e7b3525a0195af2d6e397bf77"><div class="sl-block-content notranslate" style="z-index: 12; font-size: 141%;" data-highlight-theme="zenburn"><pre class="none"><code>$&gt; finger $(whoami)
Login: vbatts Name: Vincent Batts
Directory: /home/vbatts Shell: /bin/bash
Such mail.
Plan:
OHMAN
$&gt; id -Gn
devel opencontainers docker appc redhat golang slackware</code></pre></div></div></section><section data-background-color="#f6c764" data-background-image="container-runtimes-27/60672f0849c5b758b11dc0905dc42c02.svg" data-id="b7d8b0e84f42a99bd85a74cb3f49f839">
<div class="sl-block" data-block-type="text" style="height: auto; min-width: 30px; min-height: 30px; width: 600px; left: 80px; top: 24px;" data-block-id="a5b4e7954a36b69290dcd16876c8c908"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 11;">
<h2>Containers</h2>
</div></div>
<div class="sl-block" data-block-type="image" data-block-id="ed922660e3fedce662ae522d1fbf5540" style="min-width: 4px; min-height: 4px; width: 660px; height: 392px; left: 150px; top: 210px;"><div class="sl-block-content" style="z-index: 12;"><img style="" data-natural-width="550" data-natural-height="327" data-lazy-loaded="" data-src="container-runtimes-27/798496c4607c11d48ebc0056daad3a57.png"></div></div>
<div class="sl-block" data-block-type="text" data-block-id="74543548cc7f3e8b8f4bd1cc01b69c3c" style="height: auto; min-width: 30px; min-height: 30px; width: 246px; left: 714px; top: 630px;"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 13;" dir="ui">
<p><a href="https://s3.amazonaws.com/static.samaritanspurse.org/occ/images/2015-occ-how-to-pack/shoebox_empty.png" target="_blank">(Cite: the internet)</a></p>
</div></div></section><section data-background-color="#f6c764" data-background-image="container-runtimes-27/60672f0849c5b758b11dc0905dc42c02.svg" data-id="c5a2cf06815f58aeef7d22c99ff5c3bc">
<div class="sl-block" data-block-type="text" style="height: auto; width: 600px; left: 80px; top: 24px;" data-block-id="f36e763f022e3a676a0843ed9659480a"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 11;">
<h2>Containers</h2>
</div></div>
<div class="sl-block" data-block-type="image" style="width: 660px; height: 363px; left: 150px; top: 197px; min-width: 4px; min-height: 4px;" data-block-id="2cd3452c64be6e82a4492a6a6d51c886"><div class="sl-block-content" style="z-index: 12;"><img data-natural-width="320" data-natural-height="176" data-lazy-loaded="" data-src="container-runtimes-27/41bdbfee7c1333d20604b26b7ed5087c.gif"></div></div>
<div class="sl-block" data-block-type="text" data-block-id="1b0f9b21474654a8a2b879f23c2c98b4" style="height: auto; min-width: 30px; min-height: 30px; width: 232px; left: 720px; top: 630px;"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 13;">
<p><a href="http://i.imgur.com/ijajqjg.gif" target="_blank">(Cite: The Internet)</a></p>
</div></div></section><section class="stack" data-id="769d70efd6629e04c58d2fee2ec8f6b2"><section data-background-color="#f6e864" data-background-image="container-runtimes-27/60672f0849c5b758b11dc0905dc42c02.svg" data-id="72826d2ed58ce1a66039e72b1ba8c1a2">
<div class="sl-block" data-block-type="text" style="height: auto; width: 600px; left: 80px; top: 24px;" data-block-id="bc003bb1b30854ccd121d0636572fd93"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 11;">
<h2>Container Runtimes</h2>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; width: 600px; left: 120px; top: 140px;" data-block-id="fff22f9b0a772423cb6d37ab14b47d27"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 12;">
<p>chroot + unshare (mnt ns) + cgroups</p>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; width: 600px; left: 127px; top: 70px;" data-block-id="a445f8ab4cf1afc193f5683e20857ee6"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 13;">
<h3>a history</h3>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; width: 600px; left: 120px; top: 210px;" data-block-id="b408a3fe07c2cdcc3357cfa4ea528889"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 14;">
<p>LXC</p>
<ul>
<li>first release <a href="https://github.com/lxc/lxc/releases/tag/lxc_0_1_0" target="_blank">Aug 2008</a>
</li>
<li>alive and well today</li>
<li><a href="https://linuxcontainers.org/" target="_blank">https://linuxcontainers.org/</a></li>
</ul>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; width: 600px; left: 113px; top: 400px;" data-block-id="929e3e58b5c8c965d9b614baec4ade87"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 15;">
<p>systemd-nspawn</p>
<ul>
<li><a href="https://github.com/systemd/systemd/commit/88213476187cafc86bea2276199891873000588d" target="_blank">first commit in 2011</a></li>
<li>alive and well today</li>
<li>originally just a simple test and debug utility</li>
</ul>
</div></div></section><section data-background-color="#f6e864" data-background-image="container-runtimes-27/60672f0849c5b758b11dc0905dc42c02.svg" data-id="ec754b3bf52ec5ecb529392d57fe5966">
<div class="sl-block" data-block-type="text" style="height: auto; width: 600px; left: 80px; top: 24px;" data-block-id="979c9ca28c6243caa9d821aac91a9bb8"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 11;">
<h2>Container Runtimes</h2>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; width: 600px; left: 127px; top: 70px;" data-block-id="482dc59d4792532f2c87d433d23a2ecf"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 12;">
<h3>a history</h3>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; width: 600px; left: 120px; top: 140px;" data-block-id="4939b2ef34ef8e3dd68df7f44c13c06a"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 13;">
<p>Docker</p>
<ul>
<li>all the things</li>
<li>2013 python script became golang</li>
<li>(not a single good link to the source)</li>
</ul>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; min-width: 30px; min-height: 30px; width: 600px; left: 120px; top: 280px;" data-block-id="7713c41976aa1d9d5c63b8d62e3fab77"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 14;">
<p><a href="https://github.com/google/lmctfy/" target="_blank">lmctfy</a></p>
<ul>
<li>2013</li>
<li>academic offering</li>
<li>dead, but still a good example of form over function</li>
</ul>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; min-width: 30px; min-height: 30px; width: 600px; left: 120px; top: 427px;" data-block-id="618691803ad877a12e0bb8fcd9d1befc"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 15;">
<p><a href="https://github.com/rkt/rkt" target="_blank">rkt</a></p>
<ul>
<li>Dec 2014</li>
<li>spec-first design (appC spec)</li>
</ul>
</div></div></section><section data-background-color="#f6e864" data-background-image="container-runtimes-27/60672f0849c5b758b11dc0905dc42c02.svg" data-id="0a61d7aa3e2526997ead63eeb9dd5a2e">
<div class="sl-block" data-block-type="text" style="height: auto; width: 600px; left: 80px; top: 24px;" data-block-id="dff36a7c7757626aaaa18f25ac48b00d"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 11;">
<h2>Container Runtimes</h2>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; width: 600px; left: 127px; top: 70px;" data-block-id="6602c1048c561fb282997543b1cf9335"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 12;">
<h3>a history</h3>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; min-width: 30px; min-height: 30px; width: 600px; left: 120px; top: 245px;" data-block-id="d74f9c86823835265b8b32d97d9afb8a"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 13;">
<p><a href="https://github.com/opencontainers/runc" target="_blank">libcontainer (now runc)</a></p>
<ul>
<li>2014</li>
<li>to have something golang native, rather than shell-out to lxc</li>
<li>(eventually meant more shelling-out)</li>
<li>the original OCI runtime</li>
</ul>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; min-width: 30px; min-height: 30px; width: 600px; left: 120px; top: 413px;" data-block-id="3e70f89c8e369bb83f82b26e9efcc89e"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 14;">
<p>  <a href="https://github.com/lxc/lxd" target="_blank">lxd</a></p>
<ul>
<li>2014</li>
<li>container manager built on lxc</li>
<li>(came after Docker made asks of lxc, then abandoned it for libcontainer)</li>
</ul>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; min-width: 30px; min-height: 30px; width: 600px; left: 120px; top: 125px;" data-block-id="d155f2f9467065c6c5083ce2f09dc4c7"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 15;">
<p><a href="https://wiki.openvz.org/LibCT" target="_blank">libct</a></p>
<ul>
<li>from odis/openVZ folks</li>
<li>C library of container helpers (not docker or lxc related)</li>
</ul>
</div></div></section><section data-background-color="#f6e864" data-background-image="container-runtimes-27/60672f0849c5b758b11dc0905dc42c02.svg" data-id="04243c3436da43de42276742abe75dd4">
<div class="sl-block" data-block-type="text" style="height: auto; width: 600px; left: 80px; top: 24px;" data-block-id="31992d94e07cd91b82c6a7e836cd44f6"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 11;">
<h2>Container Runtimes</h2>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; width: 600px; left: 127px; top: 70px;" data-block-id="bd6de0f5cf15e3dcb9eb7e7eda2b17ad"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 12;">
<h3>a history</h3>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; min-width: 30px; min-height: 30px; width: 600px; left: 120px; top: 191px;" data-block-id="256a23512acc166c8dd33940ab215d58"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 14;">
<p>OCI Specification</p>
<ul>
<li>2015</li>
<li>(<a href="https://github.com/opencontainers/image-spec/releases/tag/v1.0.0" target="_blank">image</a> and <a href="https://github.com/opencontainers/runtime-spec/releases/tag/v1.0.0" target="_blank">runtime</a>) v1.0.0 in 2017</li>
<li>
<a href="https://github.com/opencontainers/distribution-spec" target="_blank">distribution-spec</a> began 2018 (formerly docker registry API)</li>
</ul>
</div></div></section></section><section class="stack" data-id="1071dda214ad3f52b29b4c9891708059"><section data-background-color="#a2d628" data-background-image="container-runtimes-27/60672f0849c5b758b11dc0905dc42c02.svg" data-id="95f5b6d70ae66828b8bc574cfc816ae8">
<div class="sl-block" data-block-type="text" style="height: auto; width: 712px; left: 80px; top: 24px;" data-block-id="717e57d9f6ec7779b7a11e6fe6c74b72"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 11;">
<h2>Container Runtime Interface</h2>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; width: 600px; left: 120px; top: 155px;" data-block-id="2fb73a50c9a2fd1af6c5d1697fa05bce"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 12;">
<p>Kubernetes</p>
<ul>
<li>2014</li>
<li>was (is?) entirely too docker-centric</li>
<li>with rkt it was clear there were big changes needed</li>
<li>Enter <a href="https://kubernetes.io/blog/2016/12/container-runtime-interface-cri-in-kubernetes/" target="_blank">CRI</a> (2016)
<ul>
<li>gRPC interface for ImageService and RuntimeService</li>
</ul>
</li>
</ul>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; min-width: 30px; min-height: 30px; width: 600px; left: 120px; top: 498px;" data-block-id="4f4d7e19c45b3369d9e9415279a2932c"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 13;">
<p>migration via <a href="https://github.com/kubernetes/kubernetes/tree/master/pkg/kubelet/dockershim" target="_blank">dockershim</a></p>
<ul>
<li>completely switched to docker via CRI in v1.8</li>
</ul>
</div></div>
<div class="sl-block" data-block-type="image" style="min-width: 4px; min-height: 4px; width: 572px; height: 136px; left: 160px; top: 344px;" data-block-id="fab3a59b426f306a74df849017bb2f8d"><div class="sl-block-content" style="z-index: 14;"><img style="" data-natural-width="572" data-natural-height="136" data-lazy-loaded="" data-src="container-runtimes-27/0c750f65e1f4c6b7362abbc9c5963392.png"></div></div>
<div class="sl-block" data-block-type="text" style="height: auto; min-width: 30px; min-height: 30px; width: 113px; left: 757px; top: 433px;" data-block-id="91bbd175917fd0794d46507270334a25"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 15;">
<p>(<a href="https://d3vv6lp55qjaqc.cloudfront.net/items/0I3X2U0S0W3r1D1z2O0Q/Image%202016-12-19%20at%2017.13.16.png" target="_blank">source</a>)</p>
</div></div></section><section data-background-color="#a2d628" data-background-image="container-runtimes-27/60672f0849c5b758b11dc0905dc42c02.svg" data-id="f8521ec396979ceb6d7f7f5c6f3b3111">
<div class="sl-block" data-block-type="text" style="height: auto; width: 712px; left: 80px; top: 24px;" data-block-id="1ec090319557d0f3141e8b98ea4f3856"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 11;">
<h2>Container Runtime Interface</h2>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; width: 600px; left: 120px; top: 140px;" data-block-id="b504dd4cf0554841f2d92e5ea20c3bd1"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 12;">
<p><a href="https://github.com/kubernetes-sigs/cri-o" target="_blank">cri-o </a>(originally oci-d)</p>
<ul>
<li>kubernetes only use-case</li>
<li>OCI images and runtime</li>
<li>primarily called runc, but is flexible to call other runtimes</li>
</ul>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; width: 600px; left: 120px; top: 280px;" data-block-id="5152c23b4dc41ad9e49222dce9cc973a"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 13;">
<p><a href="https://github.com/containerd/containerd" target="_blank">containerd</a></p>
<ul>
<li>primarily docker use-case, but includes a CRI shim</li>
<li>OCI and Docker images</li>
</ul>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; min-width: 30px; min-height: 30px; width: 600px; left: 120px; top: 398px;" data-block-id="b45eca90f9d5925f31fb8d383ca56596"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 14;">
<p><a href="https://github.com/alibaba/pouch" target="_blank">alibaba/pouch</a></p>
<ul>
<li>swiss arm knife of sorts</li>
<li>uses kvm pieces</li>
<li>supports 2.6.32+ kernel</li>
<li>imports from runc, docker, p2p backend, and expose a CRI socket</li>
</ul>
</div></div></section><section data-background-color="#a2d628" data-background-image="container-runtimes-27/60672f0849c5b758b11dc0905dc42c02.svg" data-id="2aa182e4d622d287cadbee79e2fa8d82">
<div class="sl-block" data-block-type="text" style="height: auto; width: 712px; left: 80px; top: 24px;" data-block-id="982a9671182ab472f3a26aacc4a0077d"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 10;">
<h2>Container Runtime Interface</h2>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; width: 600px; left: 120px; top: 140px;" data-block-id="84b76c1b1ac20648c00e8378f7ca9551"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 11;">
<p><a href="https://github.com/kubernetes-sigs/cri-tools" target="_blank">cri-tools</a></p>
<ul>
<li>`crictl`</li>
<li>the cli for working or debugging directly with CRI layer</li>
</ul>
</div></div></section></section><section class="stack" data-id="15e992e3b7a29162926690ec63641751"><section data-background-color="#b6e7f5" data-background-image="container-runtimes-27/60672f0849c5b758b11dc0905dc42c02.svg" data-id="9a74b051b021d729c6e6a5b166f30f21">
<div class="sl-block" data-block-type="text" style="height: auto; min-width: 30px; min-height: 30px; width: 600px; left: 80px; top: 24px;" data-block-id="41b474ff75947295a1c0f1c5e3fd2930"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 10;">
<h2>OCI RUNTIMES</h2>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; min-width: 30px; min-height: 30px; width: 600px; left: 120px; top: 273px;" data-block-id="6bcf2c76cb7a4629dbb292e22ed79211"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 11;">
<p><a href="https://github.com/oracle/railcar" target="_blank">oracle/railcar</a></p>
<ul>
<li>2017</li>
<li>an OCI runtime</li>
<li>written in rust</li>
</ul>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; min-width: 30px; min-height: 30px; width: 600px; left: 120px; top: 402px;" data-block-id="0b435a4f3e624068f05afe334e7380ef"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 12;">
<p><a href="https://github.com/kata-containers/" target="_blank">kata-containers</a> (formerly clear containers and hyperV)</p>
<ul>
<li>mixed years</li>
<li>an OCI runtime</li>
<li>thinVM (qemu with custom machine type)</li>
</ul>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; min-width: 30px; min-height: 30px; width: 600px; left: 120px; top: 121px;" data-block-id="6664b88d0e57e09af7461e7e9747f87a"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 15;">
<p><a href="https://github.com/opencontainers/runc" target="_blank">openconatainers/runc</a></p>
<ul>
<li>2014</li>
<li>to have something golang native, rather than shell-out to lxc</li>
<li>(eventually meant more shelling-out)</li>
<li>the original OCI runtime</li>
</ul>
</div></div></section><section data-background-color="#b6e7f5" data-background-image="container-runtimes-27/60672f0849c5b758b11dc0905dc42c02.svg" data-id="86da8e515a3e00c9ccf0b4618b763d0b">
<div class="sl-block" data-block-type="text" style="height: auto; width: 600px; left: 80px; top: 24px;" data-block-id="c4fd86dd9272ad6adab8d0d3e5b7733b"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 10;">
<h2>OCI RUNTIMES</h2>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; width: 600px; left: 120px; top: 222px;" data-block-id="04a5351fd940520023c918dabef8ac96"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 11;">
<p><a href="https://github.com/NVIDIA/nvidia-container-runtime" target="_blank">nvidia fork of runc</a></p>
<ul>
<li>inherently an OCI runtime</li>
<li>exposes GPU specific configuration</li>
</ul>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; width: 600px; left: 120px; top: 334px;" data-block-id="6f1ddbf523471638a67a06c51bda4150"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 12;">
<p><a href="https://github.com/google/gvisor" target="_blank">google/gvisor</a> (`runsc`)</p>
<ul>
<li>has an OCI runtime</li>
<li>syscall emulation layer</li>
<li>uses a bit of kvm</li>
<li>feels a bit like thrown over the wall</li>
</ul>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; width: 600px; left: 120px; top: 492px;" data-block-id="3314629b5651a910fd046b9d0f22f566"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 13;">
<p><a href="https://github.com/Microsoft/hcsshim/tree/master/cmd/runhcs" target="_blank">windows/hcsshim</a> (`runhcs`)</p>
<ul>
<li>has an OCI runtime</li>
<li>windows native container API</li>
</ul>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; min-width: 30px; min-height: 30px; width: 600px; left: 120px; top: 98px;" data-block-id="a66b9e2950061d356bf3a65ca8b64b11"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 15;">
<p><a href="https://github.com/nabla-containers/runnc" target="_blank">nabla-containers</a> (IBM research)</p>
<ul>
<li>has an OCI runtime</li>
<li>unikernel approach</li>
<li>requires tailored container images with their executor</li>
</ul>
</div></div></section><section data-background-color="#b6e7f5" data-background-image="container-runtimes-27/60672f0849c5b758b11dc0905dc42c02.svg" data-id="8e29263159c91a4152c2517d678d03b8">
<div class="sl-block" data-block-type="text" style="height: auto; width: 600px; left: 80px; top: 24px;" data-block-id="c0d4ac837bc425dff5589e1fa2f98013"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 11;">
<h2>OCI RUNTIMES</h2>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; min-width: 30px; min-height: 30px; width: 600px; left: 120px; top: 105px;" data-block-id="c9493233557fa3dc263a245a5d697103"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 12;">
<ul>
<li>
<a href="https://github.com/giuseppe/crun" target="_blank">giuseppe/crun</a>
<ul>
<li>thin OCI runtime written in C</li>
</ul>
</li>
<li>
<a href="https://github.com/projectatomic/bwrap-oci" target="_blank">projectatomic/bwrap-oci</a>
<ul>
<li>OCI runtime wrapper around bubblewrap</li>
</ul>
</li>
<li>
<a href="https://github.com/vbatts/nspawn-oci" target="_blank">vbatts/nspawn-oci</a>
<ul>
<li>OCI runtime wrapper around systemd-nspawn</li>
</ul>
</li>
<li>
<a href="https://github.com/wking/ccon/" target="_blank">wking/ccon</a>
<ul>
<li>OCI pet project of community member</li>
</ul>
</li>
</ul>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; min-width: 30px; min-height: 30px; width: 600px; left: 120px; top: 366px;" data-block-id="d75e83298b94f7b5c3d41dcfbe0b7793"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 13;">
<p>systemd-nspawn native support (<a href="https://github.com/systemd/systemd/pull/9762" target="_blank">pr9762</a>)</p>
<ul>
<li>preferable than wrapper</li>
<li>still has a couple of pieces missing like hooks and compatible cli</li>
</ul>
</div></div></section></section><section data-background-color="#ac97ca" data-background-image="container-runtimes-27/60672f0849c5b758b11dc0905dc42c02.svg" data-id="61b0f0beead3f9f76ea1b5d49e122480">
<div class="sl-block" data-block-type="text" style="height: auto; min-width: 30px; min-height: 30px; width: 600px; left: 80px; top: 24px;" data-block-id="b1caa2b8f1c1ed24e77eb3e6b1b5c078"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 11;">
<h2>non-docker options</h2>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; min-width: 30px; min-height: 30px; width: 600px; left: 120px; top: 460px;" data-block-id="1a0b96e9064342dceedef2c0f270268d"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 12;">
<p><a href="https://github.com/containers/libpod" target="_blank">podman</a></p>
<ul>
<li>easy alias for `docker`</li>
<li>direct invocation</li>
<li>now supports non-root</li>
</ul>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; min-width: 30px; min-height: 30px; width: 600px; left: 120px; top: 326px;" data-block-id="f94a16b28a2dbde2e164a28219a96abd"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 13;">
<p><a href="https://github.com/containers/buildah" target="_blank">buildah</a></p>
<ul>
<li>drop-in for `docker build`, as well as shell subcommands</li>
<li>direct invocation</li>
<li>now supports non-root builds</li>
</ul>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; min-width: 30px; min-height: 30px; width: 600px; left: 120px; top: 110px;" data-block-id="3dd09cd98b31bd12f028a4eef222f81e"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 14;">
<p><a href="https://github.com/openSUSE/umoci" target="_blank">umoci</a></p>
<ul>
<li>utility for working with OCI container images</li>
<li>unpack, modify, repack</li>
</ul>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; min-width: 30px; min-height: 30px; width: 600px; left: 120px; top: 223px;" data-block-id="9502568921124042fce190eb0385f363"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 15;">
<p><a href="https://github.com/containers/skopeo" target="_blank">skopeo</a></p>
<ul>
<li>initially just remote inspect images</li>
<li>now copies (local &lt;=&gt; remote) and translates formats</li>
</ul>
</div></div></section><section data-background-color="#cc2114" data-background-image="container-runtimes-27/60672f0849c5b758b11dc0905dc42c02.svg" data-id="f493b413871c1e2cc59b0016ba9f03db"><div class="sl-block" data-block-type="text" style="height: auto; min-width: 30px; min-height: 30px; width: 600px; left: 180px; top: 406px;" data-block-id="b907e1a44da82b3a5f0e3af6097b2ebf"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 11;">
<h2 style="text-align:center"><a href="https://github.com/vbatts/talks" target="_blank">github.com/vbatts/talks</a></h2>
<h2 style="text-align:center">Thanks!</h2>
</div></div>
<div class="sl-block" data-block-type="text" style="height: auto; min-width: 30px; min-height: 30px; width: 800px; left: 80px; top: 209px;" data-block-id="ef51e9976de4838e5a1d814b1e95a71f"><div class="sl-block-content" data-placeholder-tag="p" data-placeholder-text="Text" style="z-index: 12;">
<h2 style="text-align:center">Vincent Batts</h2>
<h2 style="text-align:center">@vbatts| vbatts@redhat.com</h2>
</div></div></section>
</div>
</div>
<script>
var SLConfig = {"deck": {"id":1570408,"slug":"container-runtimes-27","title":"Container Runtimes - Devconf.IN 2019","description":"","width":960,"height":700,"margin":0.05,"visibility":"self","published_at":null,"sanitize_messages":null,"thumbnail_url":"https://s3.amazonaws.com/media-p.slid.es/thumbnails/b2bc7dbe154c26babe998597a7d5c382/thumb.jpg?1564729355","view_count":0,"user":{"id":352550,"username":"vbatts","name":"Vincent Batts","description":"","thumbnail_url":"https://www.gravatar.com/avatar/a76bbb02d3ce311820f53ef484c0f8bf?s=140\u0026d=https%3A%2F%2Fstatic.slid.es%2Fimages%2Fdefault-profile-picture.png","paid":true,"pro":true,"lite":false,"team_id":32,"settings":{"id":185974,"present_controls":true,"present_upsizing":true,"present_pointer":false,"present_notes":true,"default_deck_tag_id":null},"enterprise":true,"membership":{"role":"member","manager":false,"activated":true}},"background_transition":"none","transition":"none","theme_id":176,"theme_font":"overpass2","theme_color":"no-color","auto_slide_interval":0,"comments_enabled":true,"forking_enabled":false,"rolling_links":false,"center":false,"shuffle":false,"should_loop":false,"share_notes":false,"slide_number":false,"slide_count":19,"rtl":false,"version":2,"collaborative":false,"deck_user_editor_limit":null,"data_updated_at":1564729355127,"font_typekit":null,"font_google":null,"time_limit":null,"upsizing_enabled":true,"notes":{"b7d8b0e84f42a99bd85a74cb3f49f839":"","9a31d21232bc7b9c95cf55dea8c67528":"Ask the audience to shout out some words.\nBuild system? pushing images? Immutable runtime?","92f87b47321515efd469a6b7fdd0b7b8":"Packages? \nLike distributing file systems?\nOh my god no. We _solved_ that problem already.\n\nLet's stick all these packages in an even bigger package","59c48b37c55612e6adbe6fb049eeebd3":"","ade1d1532b65f5cd89c0534356bcd58a":"It's an all new API and model for networking.\nDifficult for outside plugins to maintain their own state.\nRequires libkv integration, likely needing another daemon to the infrastructure.","b5810a00d5ba26824cc9f8c7bdc560a0":"spec-first\nStaged approach for sandbox and exec\nDefines pod for groups of applications as a service","b99e1461d3f88260c9845321cab9a9a6":"","fe0b3035817b0010681e9dcb95645309":"","3c8420c074073c8d0600122a5add94ee":"tar archives!","36ce870c10e084014b7ba91b330f8250":"Ridiculous Contentions?\nAversion to being humble?\n\nIs this about being able to have a build of an image last forever? I sure hope not.\nBut your tooling and infrastructure ought not have pervasive churn with every upstream release. ","b40af9a3eee5d605371b2434fb4b6587":"","bb89c31aabf25cfcbe365755ec9d0300":"v1 is intended to be generally the infrastructure that many have already been working on.\nOnce we're all on the same open page, then we can continue improving the baseline together.\n\nEnsuring that a \"container integration\" done today, is not _completely_ broken on the next minor release of some tool. If a switch is needed, it ought not demand re-architecture.\n\nMaybe not tarballs foreva\nAnd now Brandon announces `quayctl` that can do bittorrent replication of container images. Amazing.","31d4a1253bc0e1e7824fa7dc00e15bde":"Is this really standardized?\n\nIsn't this what folks use config management for?","4ab0867b39a2610f7393f3c017096dba":"I welcome to hear any particular wishes now. or send them to the oci-dev mailing-list","a3a8e6083e264bb3e6b6b62ea57c7723":"Role-Based Access Control (RBAC)\nMandatory Access Control (MAC)\n"}}};
SLConfig.theme = {"id":176,"created_at":"2014-05-27T12:38:16.183Z","updated_at":"2019-10-17T00:32:59.630Z","name":"Red Hat Corporate (Archived)","thumbnail_url":"https://s3.amazonaws.com/media-p.slid.es/thumbnails/66755080be2b0c8c0146bfa70069ef16/thumb.jpg?1571272377","sanitize_messages":null,"slide_template_ids":[28642,36442,26765,26762,56704,16857,16856,16853,16855,16854,16852,16863,16862,16861,16860,16859,16858,56721,185268,185425],"font_typekit":"","font_google":"","width":960,"height":700};
// Use local fonts
SLConfig.fonts_url = 'lib/fonts/';
</script>
<script src="lib/reveal.min.js"></script>
<script src="lib/offline.js"></script>
<!-- Initialize the presentation -->
<script>
Reveal.initialize({
width: 960,
height: 700,
margin: 0.05,
hash: true,
controls: true,
progress: true,
mouseWheel: false,
showNotes: false,
slideNumber: false,
autoSlide: 0,
autoSlideStoppable: true,
autoAnimateMatcher: SL.deck.AutoAnimate.matcher,
center: false,
shuffle: false,
loop: false,
rtl: false,
transition: "none",
backgroundTransition: "none",
highlight: {
escapeHTML: false
},
dependencies: [
{ src: 'lib/reveal-plugins/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'lib/reveal-plugins/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'lib/reveal-plugins/highlight/highlight.js' },
{ src: 'lib/reveal-plugins/notes/notes.js', async: true, condition: function() { return !!document.body.classList; } },
{ src: 'lib/reveal-plugins/zoom/zoom.js', async: true }
]
});
</script>
<script id="theme-js-output" type="text/javascript">var themeHTMLOutput = document.getElementById('theme-html-output');
if( themeHTMLOutput ) {
themeHTMLOutput.innerHTML = '<link rel="stylesheet" href="https://overpassmonotest-30e2.kxcdn.com/overpass-mono.css" />';
}
// (function() {
//
// var slidesInitInterval = setInterval( function() {
// if( window.SL && window.SL.view ) {
// // If we're in the editor, wait for the Blocks controller
// // to be initialized
// if( SL.editor ) {
//
// if( SL.editor.controllers && SL.editor.controllers.Blocks && SL.editor.controllers.Blocks.textSaved ) {
// SL.editor.controllers.Blocks.textSaved.add( function( element ) {
// var html = element.html();
// html = html.replace( /(@RedHat | @redhat)/g, '@redhat' );
// html = html.replace( 'redhat.com', 'redhat.com' );
// html = html.replace( /(Red Hat|red hat|RedHat|Red hat|Redhat|redHat|red Hat)/g, '<span class="name">Red Hat</span>' );
// html = html.replace( /( redhat |redhat )/g, ' <span class="name">Red Hat</span> ' );
// html = html.replace( 'REDHAT', '<span class="name">RED HAT</span>' );
// html = html.replace( 'redhat<', '<span class="name">Red Hat</span><' );
// html = html.replace( 'openshift', '<span class="name">OpenShift</span>' );
// html = html.replace( '<span class="name"><span class="name">Red Hat</span></span>', '<span class="name">Red Hat</span>' );
// html = html.replace( 'redhat.com', 'redhat.com' );
// html = html.replace( 'REDHAT.COM', 'REDHAT.COM' );
// html = html.replace( '@redhat', '@redhat' );
// html = html.replace( /(@RedHatNews | @redhatnews)/g, '@RedHatNews' );
// html = html.replace( /(@RedHat | @redhat)/g, '@RedHatInc' );
// html = html.replace( /(RHEL-OSP|RHELOSP|Red Hat Enterprise Linux OpenStack Platform)/g, 'Red Hat OpenStack Platform' );
// html = html.replace( /(openstack |openstack|open stack|openStack|Openstack)/g, 'OpenStack' );
// html = html.replace( 'openstack', 'OpenStack' );
// html = html.replace( 'openstack<', 'OpenStack<' );
//
// element.html( html );
// } );
//
// clearInterval( slidesInitInterval );
// }
//
// }
// else {
// clearInterval( slidesInitInterval );
// }
// }
// }, 500 );
//
// })();
// piwik script
var _paq = _paq || [];
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
/* Disabled Apr 25 since the script was unreachable
* and caused exports to fail. -hakim@slides.com
(function() {
var u = (("https:" == document.location.protocol) ? "https" : "http") +
"://engstats.redhat.com/piwik/";
_paq.push(["setTrackerUrl", u+"piwik.php"]);
_paq.push(["setSiteId", "8"]);
var d=document, g=d.createElement("script"),
s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
})();
*/
function sliceString(selector) {
var elements = document.getElementsByClassName(selector);
for (var h=0; h<elements.length; h++){
var string = elements[h].innerText,
total = string.length,
div = '';
// futile attempt to clean space
var string = elements[h].innerText.trim();
for (var i=0; i<total; i++) {
var letter = string.charAt(i);
div+= '<span class="'+letter+'">'+letter+'</span>';
}
elements[h].innerHTML = div;
}
}
sliceString('lettering');
sliceString('lettering'); //no rogue spaces when fired twice for some reason
// function sliceString(selector) {
// if (!document.querySelector) return;
// var string = document.querySelector(selector).innerText,
// total = string.length,
// html = '';
// for (var i=0; i<total; i++) {
// var letter = string.charAt(i);
// html+= '<span class="'+letter+'">'+letter+'</span>';
// }
// document.querySelector(selector).innerHTML = html;
//}
//sliceString('.lettering');</script>
</body>
</html>