Small Talk on Docker

Presenter Notes

About me

Baohua Yang, IBM researcher on datacenter networking.

His interests include:

  • High performance issues
  • Network security
  • Distributed systems

Presenter Notes

Agenda

  • Container
  • Docker
  • Component
  • Key Projects
  • Q&A

Presenter Notes

Container (since 1982)

Presenter Notes

Prior Art

  • FreeBSD jails (2000)
  • Solaris Containers (2004)
  • OpenVZ (2005)
  • LXC (?)

Drawing

Presenter Notes

Containerization Technologies

  • Isolation
    • File
    • User/Group
    • PID
    • Network
    • IPC
  • Resource Restriction
    • CPU
    • Memory
    • IO

Presenter Notes

Docker (since 2013)

Presenter Notes

What's Old

linux

  • libvirt
  • LXC
  • systemd-nspawn

Presenter Notes

What's New

docker

  • UFS (brought in)
  • API
  • Version Management(Dockerfile, Registry)

Presenter Notes

Image

Drawing

  • aufs、devicemapper、btrfs
  • /var/lib/docker/

Presenter Notes

Container

Drawing

  • Running 'image' with writable layer.

Presenter Notes

Repository

Drawing

  • Store images, like Git Repo.

Presenter Notes

Key Projects

Presenter Notes

CoreOS

coreos

Based on Chrome OS, a minimal Linux-based operating system aimed at large-scale server deployments.

  • Low resource requirement (114 MB)
  • Consistent update
  • Every program in single container

Presenter Notes

Etcd

Drawing

A highly available, distributed key value store.

  • Simple, curl-able API (HTTP + JSON)
  • Optional SSL client cert authentication
  • Benchmarked 1000s of writes/s per instance
  • Properly distributed using Raft protocol
  • Keys support TTL
  • Atomic test and set
  • Easily listen for changes to a prefix via HTTP long-polling

Presenter Notes

consul

cousul

Tool for service discovery, monitoring and configuration.

  • Service Discovery
  • Health Checking
  • Key/Value Storage
  • Multi-Datacenter

Presenter Notes

Confd

A configuration management tool built on top of etcd.

  • Sync configuration files
  • Reloading applications

Presenter Notes

Fleet

fleet

CoreOS's cluster management system. On top of systemd, to manage services on server in cluster transparently.

 1 [Unit]
 2 Description=My Service
 3 Requires=docker.service
 4 After=docker.service
 5 
 6 [Service]
 7 ExecStart=/usr/bin/docker run busybox /bin/sh -c "while true; do echo Hello World; sleep 1; done"
 8 
 9 [Install]
10 WantedBy=multi-user.target

Presenter Notes

Fig

Fig

Fast, isolated development environments using Docker.

1 web:
2   build: .
3   command: python app.py
4   links:
5    - db
6   ports:
7    - "8000:8000"
8 db:
9   image: postgres

Presenter Notes

Libcontainer

  • Unify the API for container's drivers
  • Combine cgroups,capability,namespaces,apparmor and seLinux
  • Replace LXC

Presenter Notes

Libchan

Channel for network services

  • Simple message passing
  • Synchronization for concurrent programming
  • Nesting: channels can send channels

Presenter Notes

Libswarm

Drawing

  • A toolkit for composing network services.
  • Or a communication middleware

Presenter Notes

Q&A?

Presenter Notes

Presenter Notes