Skip to content

20180502_talk_3

20180502_talk_3

Building images without Docker

1 - Why

Separe these phases
* Build
* Push/pull
* Run

Push/pull & Run: CRI-O or Containerd

Push/pull & Run & Build: Docker (Initially)

Currently:
- Implicit dependency between build & run

2 - Dockerfile-less & Daemon-less

2.1 - Why

Dockerfiles: Really like shell scripts but with some Dockerfile syntax …
Daeomon: > Missed notes

2.2 - Tools
Buildah
  • No docker daemin involved
  • Can build from Dockerfile (compatibility)
  • Can build imperatif via CLI steps
genuinetools/img
  • Same UX as docker commands
  • Standalone
  • Dockefile and OCI compatible images
  • Use RunC rootless

4 - Runtime-less ?

4.1 - Why
  • To be more portable
  • Less complexity ?
  • Swap container tech on the fly ?
4.2 - Tools
GoogleContainerTools/distroless
  • Declarative and reproducible
  • No timestamps
  • all dependencies at build time
  • Can NOT interpret Dockefile
  • Rebase-able
  • Minimal images
GoogleContainerTools/kaniko
  • Interpret Dockerfile
  • Snapshots layers without UnionFS
  • Meant exclusively for running inside containerized env
  • No runtime or containers
  • gVisor + RunSc + Kube

5 - Libs

  • containers/image
  • google/go-containerregistry
  • google/container-registry

6 - Next ?

CNI: Network
CRI: Runtime
CSI: Storage
CBI: ???