Upgrade to Pro — share decks privately, control downloads, hide ads and more …

What is a (Docker) Container, really?

What is a (Docker) Container, really?

See slide #5 from a (shortened) K8s 101 which I always use to baseline and level-set the audience before diving into advanced container topics.

Avatar for Michael Gasch

Michael Gasch

January 01, 2018
Tweet

More Decks by Michael Gasch

Other Decks in Technology

Transcript

  1. Confidential  ©2019 VMware, Inc. 2 „Kubernetes is an open-source

    System for automating Deployment, Scaling, and Management of containerized Applications.” The Origin of Kubernetes
  2. Confidential  ©2019 VMware, Inc. 3 Google Search (late 1990s)

    Borg (~2003) Cgroups (2007) Omega (~2012) Docker (2013) The Origin of Kubernetes Kubernetes (2014) @embano1
  3. Confidential  ©2019 VMware, Inc. 4 Kubernetes Cluster Kubernetes High-Level

    Architecture Infrastructure (Compute, Storage, Networking) Control Plane Worker Pod Pod Pod Pod Pod API Kubernetes Cloud Provider @embano1
  4. Confidential  ©2019 VMware, Inc. 5 So what is a

    Container, really? Kernel Mode Cgroups Namespaces Security Capabilities Scheduler Syscall task_struct … Scheduling Entity (se) “running” syscall.Exec(ENTRYPOINT/CMD)* A Structure in Kernel Memory. The Kernel has no Notion of a “Container”. It’s yet another Executable. User Mode Docker Engine ContainerCreate() * After Container Sandbox Initialization (nsenter.go/nsexec.c) sched_class fair.c (CFS) @embano1
  5. Confidential  ©2019 VMware, Inc. 6 The Pod – The

    atomic Unit in Kubernetes Kubernetes Primitives /pause Container #1 Container #2 Pod Limits Requests https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.13/#podspec-v1-core Volumes Priority Affinity Probes IP @embano1
  6. Confidential  ©2019 VMware, Inc. 7 Higher Level Objects Kubernetes

    Primitives Pod “redis-<id>-1” ReplicaSet “redis-<ID>” “desired: 3” Deployment “redis” “strategy: rollingUpdate” Pod “redis-<id>-2” Pod “redis-<id>-3” myCustomController “kind: redisCluster” Horizontal Pod Autoscaler (HPA) Metrics Provider myCustomController kubectl create –f redis.yaml REST API SDKs API