6. Advantages of the approach
● Automatization
● Scalability
● Track your changes
● A way to define application
dependencies
● Unifies zoo of technologies
15. A couple of keynotes
● Docker is a daemon
● Docker is a client-server application
● All containers share the same kernel
● Currently, Docker runs only on Linux kernel
16. Dockerfile
FROM ruby:2.5
RUN apt-get update && apt-get install
-y build-essential libpq-dev nodejs
RUN mkdir /app
WORKDIR /app
ADD Gemfile /app/Gemfile
ADD Gemfile.lock /app/Gemfile.lock
RUN bundle install --jobs 4
ADD . /app
RUN bundle exec rake assets:precompile
CMD rake server
17. Dockerfile
# builder stage
FROM ubuntu:16.04 as builder
RUN apt-get update &&
apt-get --no-install-recommends --yes install
ca-certificates
cmake
g++
make
pkg-config
graphviz
doxygen
git
curl
libtool-bin
autoconf
automake
26. More keynotes
● Image is a stack of layered snapshots
● Image is read-only
● Container is immutable
● Distinguish the build time and the run time
27. Use cases
● A developer defines an exact application environment himself
● To resolve environment conflicts between applications
● Try and forget
● To run tests in parallel without interfering each other
● To define a unified interface to treat any application
45. A couple of keynotes
● Ansible is written on Python, but it’s YAML
● You define the desired state
● Ansible is declarative, but it has all constructions
● Docker removes the constraint of variety of recipes
● You can start with a single file
● You can build all architecture as you do in code
50. Cons
● Takes more time for single server setup
● Hard to make quick’n’dirty hacks
● Isolation makes some things hard
○ Zero downtime deploy
● WAT??? for classic admin
○ Need to pay more for DevOps
● Little problems
○ Ansible requires Python on a server