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

Docker after 500M Containers

Docker after 500M Containers

Slides from ClusterHQ Meetup talk

video/blog followup: http://blog.heavybit.com/blog/2015/3/23/dockermeetup

Reed Allman

February 11, 2015
Tweet

More Decks by Reed Allman

Other Decks in Programming

Transcript

  1. Docker After Launching
    500M Containers
    Travis Reeder & Reed Allman

    View full-size slide

  2. What would you say you do here?

    View full-size slide

  3. think SQS, but not Amazon
    (we copied them)

    View full-size slide

  4. think Lambda, but not Amazon
    (they copied us)

    View full-size slide

  5. The deets on

    View full-size slide

  6. 1) Write code using ${FAVORITE_LANG} that performs a
    specific function == your worker

    View full-size slide

  7. 2) Upload your code package

    View full-size slide

  8. 3) Queue a task. Or millions of tasks.

    View full-size slide

  9. 4) IronWorker executes tasks inside Docker
    containers across 1000’s of machines

    View full-size slide

  10. A time not so long ago, in this galaxy...

    View full-size slide

  11. We were using LXC

    View full-size slide

  12. Single one size fits all container

    View full-size slide

  13. Components were getting old
    Ruby 1.9, Node 0.8, Mono 2, Java 1.6, etc..

    View full-size slide

  14. Hard to upgrade
    risk breaking customer’s tasks

    View full-size slide

  15. Hey, look what these whale
    activists are doing

    View full-size slide

  16. Solved our main problem
    Can upgrade and add images easily while being backwards compatible
    (hooray, tags)

    View full-size slide

  17. Good for you
    We can provide a lot of different stacks to run code in

    View full-size slide

  18. Good for you
    Try your code in the same docker image we’ll run it in
    (thanks Dockerhub)

    View full-size slide

  19. Good for us
    Complete isolation between user’s code and host machine

    View full-size slide

  20. Good for us
    Ration out resources between containers easily

    View full-size slide

  21. Good for us
    Layered FS makes means much less space

    View full-size slide

  22. But it hasn’t been all roses...

    View full-size slide

  23. Docker gets bitten from time to time

    View full-size slide

  24. Since Docker owns all the things...

    View full-size slide

  25. ...and upstart/systemd can’t reap...

    View full-size slide

  26. tasks can’t terminate and can’t launch new ones...

    View full-size slide

  27. $ sudo reboot

    View full-size slide

  28. Other things...

    View full-size slide

  29. phantom.js has issues...

    View full-size slide

  30. Docker has issues...

    View full-size slide

  31. Debugging Docker bugs sucks

    View full-size slide

  32. Since we’re sharing a kernel, it’s hard to tell whether:
    1) Docker has issues
    2) Linux has issues
    or
    3) We forgot to take our pills

    View full-size slide

  33. Our Christmas List

    View full-size slide

  34. Better debugging tools
    (like stats in 1.5)

    View full-size slide

  35. Swarm looks awesome for resource based launching

    View full-size slide

  36. Docker+Iron_((?!worker).)*
    ● Build containers (instead of servers)
    ● Deployment (CoreOS+Fleet)
    ● On-prem packaging / deployment (b/c RHEL)

    View full-size slide