controlled, portable environment for your application • Containers are lightweight • Microservices ❤ Containers • Linux containers prd ready on Docker 1.5 • Windows containers coming in Windows Server 2016
exact environment (but not a whole VM). $ git add Dockerfile $ git commit -m “Dev and Ops run the same Dockerfile” A Dockerﬁle deﬁnes a container image. Images layer additively. $ cat Dockerfile FROM ubuntu RUN apt-get -y install ruby ruby-dev sensu COPY ./dist /var/my_app/ EXPOSE 80 CMD ["./start.sh"] Linux Containers are lightweight and perfect for microservices. Virtually zero added cost to application startup/restart. $ docker build # build an image from the Dockerfile $ docker run # run an instance of an image
CIT, PRD environments • Exactly one environment: the container • The same container runs on your machine, Jenkins, AWS, etc • Expect your build to be identical on localhost, Jenkins, and prd. • Now, your source repo captures as much as possible about the application. • DevOps people are experts. Use their images as base.
Auspice? You can get some of the beneﬁts of containers in combination with complimentary tools. COPY puppet /etc/puppet RUN cd /etc/puppet \ && librarian-puppet update RUN puppet apply /etc/puppet/manifests/default.pp \ —-modulepath=‘/etc/puppet/modules' \ --hiera_config='/etc/puppet/hiera.yaml'
Containers are lightweight: you can run more containers than VMs on the same hardware • Containers are instances of Images. Images are made of other Images. • You can get some of the beneﬁts of containers in combination with a conﬁguration managed by Puppet