Provisioning & Deploying with Docker

  • Published on
    10-May-2015

  • View
    1.434

  • Download
    0

DESCRIPTION

Using docker with configuration management. For all things Chef, presume I say "Puppet".

Transcript

1.@ewindisch 2. Deploying with Docker Atlanta Docker Meetup 2014.05.13 3. Do I still need Chef ? 4. There is no easy answer 5. Why do we still need ? 6. But we have Dockerles! 7. Its a shell-script? $ cat SomeApp/Dockerle FROM ubuntu:13.10 RUN apt-get update; apt-get install apache RUN sed s/something/else/ /etc/apache/httpd.conf ADD shell-script.sh RUN shell-script.sh RUN [/usr/bin/apachectl, start] 8. How do we do it? $ cat Dockerfile FROM fedora RUN yum update yum -y install chef 9. Traditional Chef Hardware OS Linux Chef Installs Chef Runs Congures 10. Images on HW is usually mutable Hardware Image Linux Chef Installs Chef Image' Linux Chef Creates Replaces Runs 11. Ephemeral environments are (somewhat) immutable. Hypervisor Image Linux Chef Runs Image' Linux Chef Chef Runs Congures VM Accesses COW 12. Containers are like ephemeral VMs* * Docker containers dont HAVE to be ephemeral, but its TheRightThing Docker Image Linux Chef Runs Image' Linux Chef Chef Runs Congures Container Accesses COW TM 13. Runtime Conguration One image, several congurations Conguration based on container environment Specify metadata or roles via environment variables (passed to docker run -e) 14. Chef-for-runtime $ cat Dockerfile FROM fedora RUN yum update yum -y install chef ADD http://x/receipes.tar.gz /opt/chef" ADD solo.rb /etc/chef/solo.rb" CMD chef-solo -c /etc/chef/solo.rb ; ! apachectl start 15. Does it converge? $ docker build rm . $ echo $? # pass or fail (This is great use of Docker as an alternative to VMs for testing Chef recipes targeting non-Docker production systems) 16. Bootstrapping Conguration Management on every boot is expensive 17. Let us use images! 18. Build-time conguration Speed up Chef-based deployments (do it once!) Eliminate run-time network requirements Cong-management CI 19. Chef-for-build $ cat Dockerfile FROM fedora RUN yum update yum -y install chef" ADD http://x/receipes.tar.gz /opt/chef" ADD solo.rb /etc/chef/solo.rb" RUN chef-solo -c /etc/chef/solo.rb 20. Burning conguration into images. Docker ContainerInitiates Creates Image Linux Chef Chef Runs Congures Build Creates 21. Expanded view: Burning conguration into images. Docker Image tagInitiates Image' Linux Chef Chef Build Image Linux Chef Creates Creates Runs Creates References 1 2 22. Anatomy of a Docker+Chef build & run Docker ContainerInitiates Creates Image Linux Chef Chef Runs Congures Chef Runs Congures Build Creates Stage 1 Stage 2 23. Chef-for-all-the-things $ cat Dockerfile FROM fedora RUN yum update yum -y install chef ADD http://x/receipes.tar.gz /opt/chef" ADD solo-stage1.rb /etc/chef/solo-stage1.rb" ADD solo-stage2.rb /etc/chef/solo-stage2.rb" RUN chef-solo -c /etc/chef/solo-stage1.rb" CMD chef-solo -c /etc/chef/solo-stage2.rb ;" apachectl start