talk Talk Docker: The container (r)evolution

Docker helped to bring container technologies to the masses. Already, giants joined the movement, either claiming long time usage (like Google) or trying to catch up momentum (like Microsoft). This talk was about discovering docker and its ecosystem, from a devops and practical point of view.

Plan

  • Container revolution (5min)
    • Post WWII shipping containers.
    • From virtual machines to normalized containers.
    • Dev and ops responsibilities are clear.
  • What is Docker (10min)
    • Technologies: Linux, LXC, AUFS
    • Dockerfiles
    • Should I care ?
  • Practice (30m)
    • Basics of docker client
    • Concepts: images, containers, registries, ports, links, volumes...
    • Setting up a web + database + monitor container farm on one machine.
  • Ecosystem (10min)
    • Orchestration: Mesos, Kubernetes, fig, flannel ...
    • Providers: DigitalOcean, GCE, ECS, Azure ...
    • Alternatives: Rocket, ...
    • Full stack: OpenDeis
    • The CoreOS way: etcd/fleetd
  • Questions

Slides

Questions / Answers

How to setup docker on a Mac?

  • Boot2docker is the easiest way, otherwise you can setup a minimal linux box in your favorite hypervisor. But really, you'd better go with boot2docker.
  • Be advised though that either in your own VM or with boot2docker, the docker daemon will run inside the virtual machine, and thus all things you expect to find locally will be located on the VM (volumes, files, mounts, exposed ports, config...).

Should docker be used on a per-website basis?

The talk should have shown that this question is not really the one. But the surrounding question is "how small should be my containers?". To this, I'd say the smallest possible, usually one process per container is the good size. There are some exceptions to this for which I don't have a good answer yet, like PHP websties using nginx+fpm. Unlike a php setup that use apache for which the php interpreter is bundled into the webserver process (apache's mod_php), the nginx+fpm setup use separate processes for running php files and serving http. You will have an issue for serving static files, and I'm not sure yet what approach to take. Maybe having a "data container" for source code + assets + uploads and run both fpm and nginx containers with --volumes-from this data container can work (I'd be highly interested in what setups you're using).

Performances? Benchmarks?

No idea, google it. More specifically, the "process" part of docker is damn fast and there is about no overhead over running a process out of cgroups (in fact, it's just normal linux processes, and the one to be praised is more the linux kernel than docker). On the other hand, I have no idea about the AUFS performances, or on how to benchmark it. I'll probably update this when I'll have some time to dig it more.

Venue

I had the luck to host this talk at the Anchor Coworking in Pattaya, Thailand. If you need to work in Thailand near Pattaya, be sure to consider it: good internet, plenty of space, nice staff and o good prices. Also, Emmanuel is hosting board games events on a regular basis, wether you're a pro or just interested, be sure not to miss it!

Share the love!

Liked this article? Please consider sharing it on your favorite network, it really helps me a lot!

You can also add your valuable insights by commenting below.