Slide 1

Slide 1 text

Docker 101

Slide 2

Slide 2 text

What is Docker?

Slide 3

Slide 3 text

Why is it different?

Slide 4

Slide 4 text

VM model vs Docker model

Slide 5

Slide 5 text

Pros

Slide 6

Slide 6 text

● Rapid app deployment ● Portability ● Version control ● Lightweight ● Inmutable ● ...

Slide 7

Slide 7 text

Cons

Slide 8

Slide 8 text

● New tooling needed ● Addoption ● Orchestration ● <- putYourOwn

Slide 9

Slide 9 text

Hands on!

Slide 10

Slide 10 text

docker-machine $ docker-machine create --driver virtualbox jt $ eval $(docker-machine env jt)

Slide 11

Slide 11 text

docker run $ docker run -it ubuntu d9f46b212a12fba0091f0f...

Slide 12

Slide 12 text

docker images vs docker ps $ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE ubuntu latest d55e68e6cc9c 5 days ago 187.9 MB $ docker ps CONTAINER ID IMAGE COMMAND CREATED... 12fba0091f0f ubuntu "sleep 10s" 2 seconds ago... c8e8b387fba7 ubuntu "yes" 2 seconds ago...

Slide 13

Slide 13 text

docker logs $ docker run -d ubuntu find / db943d94d68011757ffad50a94727ec0fda1a70245f1b6c09f46... $ docker logs db943d94d68011757ff1b6c09f46... | head -n4 / /.dockerinit /etc /etc/resolv.conf

Slide 14

Slide 14 text

registry

Slide 15

Slide 15 text

docker pull $ docker pull ubuntu Using default tag: latest latest: Pulling from library/ubuntu 9377ad319b00: Pull complete a82f81f25750: Pull complete b207c06aba70: Pull complete d55e68e6cc9c: Pull complete library/ubuntu:latest: The image you are pulling has... Digest: sha256:a2b67b6107aa6b1a387e75eebafd7c...

Slide 16

Slide 16 text

docker push $ docker tag d55e68e6cc9c agonzalezro/jt $ docker push agonzalezro/jt The push refers to a repository [docker.io/agonzalezro/jt] (len: 1) d55e68e6cc9c: Image successfully pushed b207c06aba70: Image successfully pushed a82f81f25750: Image successfully pushed 9377ad319b00: Image successfully pushed latest: digest: sha256:b385f1dfb6fcda517d1... size: 7739

Slide 17

Slide 17 text

extra cmds

Slide 18

Slide 18 text

$ docker stop $ docker pause $ docker unpause $ docker start $ docker rm $ docker rmi ... AKA RTM

Slide 19

Slide 19 text

Dockerfiles

Slide 20

Slide 20 text

Dockerfile FROM debian:stable RUN apt-get update && apt-get install -y --force-yes apache2 EXPOSE 80 443 VOLUME ["/var/www", "/var/log/apache2", "/etc/apache2"] ENTRYPOINT ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]

Slide 21

Slide 21 text

What to do next? $ docker build -t agonzalezro/jt . $ docker push agonzalezro/jt

Slide 22

Slide 22 text

Compose

Slide 23

Slide 23 text

docker-compose.yml db: image: postgres ports: - “5432” companies: links: -db web_core: build: ../web_core command: bundle exec rails s -p 3000 -b ‘0.0.0.0’ ports: - ”3000:3000”

Slide 24

Slide 24 text

Hassle “free”

Slide 25

Slide 25 text

Thanks!