Slide 1

Slide 1 text

What’s new in Docker Victor Vieux Software Engineer, 
 Docker @vieux

Slide 2

Slide 2 text

1. Versioning 2. Builder 3. Runtime 4. Swarm mode 5. Compose Agenda

Slide 3

Slide 3 text

… -> 1.11 -> 1.12 -> 1.13 -> 17.03-ce -> 17.04-ce -> 17.05-ce -> … YY.MM “ce” stands for Community Edition as opposed to “ee” for Enterprise Edition New versioning…

Slide 4

Slide 4 text

…and new release schedule Docker CE Docker EE Monthly Quarterly Supported for 4 months Quarterly Supported for 12 months

Slide 5

Slide 5 text

All features presented here are available in 17.05-rc1 Available today! 17.XX …and new release schedule

Slide 6

Slide 6 text

Builder

Slide 7

Slide 7 text

Multi-Stage builds step 1 step 2 step 3 step 4 step 1 step 2 step 3 step 4 step 5 step 6 step 7 docker build & Dockerfile improvement 17.05

Slide 8

Slide 8 text

FROM ubuntu RUN apt-get install make g++ ADD . /src RUN cd /src && make EXPOSE 80 ENTRYPOINT /usr/local/bin/app Multi-Stage builds docker build & Dockerfile improvement 17.05

Slide 9

Slide 9 text

FROM alpine RUN apk add make g++ ADD . /src RUN cd /src && make EXPOSE 80 ENTRYPOINT /usr/local/bin/app Multi-Stage builds docker build & Dockerfile improvement 17.05

Slide 10

Slide 10 text

FROM alpine RUN apk add make g++ ADD . /src RUN cd /src && make Multi-Stage builds docker build & Dockerfile improvement FROM busybox ADD ./app /usr/local/bin EXPOSE 80 ENTRYPOINT /usr/local/bin/app Makefile and/or shell script 17.05

Slide 11

Slide 11 text

FROM alpine AS build-env RUN apk add make g++ ADD . /src RUN cd /src && make FROM busybox COPY --from=build-env /src/build/app /usr/local/bin/app EXPOSE 80 ENTRYPOINT /usr/local/bin/app Multi-Stage builds docker build & Dockerfile improvement 17.05

Slide 12

Slide 12 text

Multi-Stage builds docker build & Dockerfile improvement Let’s see a more complicated example: Current Dockerfile: https://github.com/docker/dockercraft Proposed Changes: https://github.com/docker/dockercraft/pull/83 17.05

Slide 13

Slide 13 text

Multi-Stage builds wget docker wget cuberite go build dockercraft run dockercraft docker build & Dockerfile improvement install wget 17.05

Slide 14

Slide 14 text

Multi-Stage builds wget docker wget cuberite go build dockercraft run dockercraft install wget wget docker docker build & Dockerfile improvement wget cuberite run dockercraft go build dockercraft install wget 17.05

Slide 15

Slide 15 text

Multi-Stage builds docker build & Dockerfile improvement 838MB 155MB final image size: final image size: * * 80% comes from debian:jessie, required by cuberite 17.05

Slide 16

Slide 16 text

• docker build . • docker build --target=cuberite . • docker build --target=docker . Specify target on build docker build & Dockerfile improvement 17.05

Slide 17

Slide 17 text

• docker build . • docker build --build-arg GO_VERSION=latest . • docker build --build-arg GO_VERSION=1.7 . ARG in FROM docker build & Dockerfile improvement ARG GO_VERSION=1.8 FROM golang:${GO_VERSION} ADD . /src WORKDIR /src RUN go build CMD [“/bin/app”] 17.05

Slide 18

Slide 18 text

Runtime

Slide 19

Slide 19 text

docker system subcommands added • docker system df • docker system prune • docker container/image/network/volume prune Data management commands $ docker system df TYPE TOTAL ACTIVE SIZE RECLAIMABLE Images 5 1 2.777 GB 2.647 GB (95%) Containers 1 1 0 B 0B Local Volumes 4 1 3.207 GB 2.261 GB (70%) 17.03

Slide 20

Slide 20 text

docker plugin subcommands added Plugins are now managed by the docker daemon and run as containers • docker plugin install • docker plugin enable/disable • docker plugin set KEY=value New plugin system 17.03

Slide 21

Slide 21 text

docker plugin subcommands added New plugin system EXAMPLE: https://github.com/vieux/docker-volume-sshfs 17.03

Slide 22

Slide 22 text

Plug-ins: Building, Shipping, Storing and Running by Nandhini Santhanam & Tibor Vass Tomorrow at 1:30pm in Ballroom D Deep dive session

Slide 23

Slide 23 text

Swarm mode

Slide 24

Slide 24 text

Synchronous service commands swarm mode improvements $ docker service create --detach=false --name redis --replicas 5 redis overall: [====================> ] 2B/5B 1/5: starting [========================================> ] 8B/9B 2/5: starting [========================================> ] 8B/9B 3/5: starting [========================================> ] 8B/9B 4/5: running [=============================================>] 9B/9B 5/5: running [=============================================>] 9B/9B $ 17.05

Slide 25

Slide 25 text

DEMO using http://play-with-docker.com Thanks to @marcosnils and @xetorthio Synchronous service commands swarm mode improvements 17.05

Slide 26

Slide 26 text

“rollback” action added to --update-failure-action (in addition to “pause” and “continue”) with all the associated flags --rollback-delay --rollback-failure-action --rollback-max-failure-ratio --rollback-monitor --rollback-parallelism Service rollback on failure swarm mode improvements 17.04

Slide 27

Slide 27 text

rack: SFO-2 rack: SFO-1 Topology-aware scheduling node1 node2 node3 swarm mode improvements 17.04

Slide 28

Slide 28 text

rack: SFO-2 rack: SFO-1 Topology-aware scheduling node1 node2 node3 docker service create --replicas=6 postgres swarm mode improvements 17.04

Slide 29

Slide 29 text

docker service create --replicas=6 postgres rack: SFO-2 rack: SFO-1 Topology-aware scheduling node1 node2 node3 swarm mode improvements 17.04

Slide 30

Slide 30 text

docker service create --replicas=6 postgres docker service create --replicas=2 webapp rack: SFO-2 rack: SFO-1 Topology-aware scheduling node1 node2 node3 swarm mode improvements 17.04

Slide 31

Slide 31 text

docker service create --replicas=6 postgres docker service create --replicas=2 webapp rack: SFO-2 rack: SFO-1 Topology-aware scheduling node1 node2 node3 swarm mode improvements 17.04

Slide 32

Slide 32 text

rack: SFO-2 rack: SFO-1 Topology-aware scheduling node1 node2 node3 swarm mode improvements 17.04

Slide 33

Slide 33 text

rack: SFO-2 rack: SFO-1 Topology-aware scheduling node1 node2 node3 docker service create --replicas=6 --placement-pref-add=rack postgres swarm mode improvements 17.04

Slide 34

Slide 34 text

docker service create --replicas=6 --placement-pref-add=rack postgres rack: SFO-2 rack: SFO-1 swarm mode improvements Topology-aware scheduling node1 node2 node3 17.04

Slide 35

Slide 35 text

docker service create --replicas=6 --placement-pref-add=rack postgres docker service create --replicas=2 --placement-pref-add=rack webapp rack: SFO-2 rack: SFO-1 swarm mode improvements Topology-aware scheduling node1 node2 node3 17.04

Slide 36

Slide 36 text

rack: SFO-2 rack: SFO-1 swarm mode improvements Topology-aware scheduling node1 node2 node3 docker service create --replicas=6 --placement-pref-add=rack postgres docker service create --replicas=2 --placement-pref-add=rack webapp 17.04

Slide 37

Slide 37 text

Service logs swarm mode improvements $ docker service create --replicas 2 --name redis redis $ docker service logs redis redis.2.najk8sq1klac@node2 | _.-``__ ''-._ redis.2.najk8sq1klac@node2 | _.-`` `. `_. ''-._ Redis 3.2.8 (00000000/0) 64 bit redis.1.lfkijq3fx3q8@node1 | _.-``__ ''-._ redis.2.najk8sq1klac@node2 | .-`` .-```. ```\/ _.,_ ''-._ redis.1.lfkijq3fx3q8@node1 | _.-`` `. `_. ''-._ Redis 3.2.8 (00000000/0) 64 bit redis.2.najk8sq1klac@node2 | ( ' , .-` | `, ) Running in standalone mode redis.1.lfkijq3fx3q8@node1 | .-`` .-```. ```\/ _.,_ ''-._ redis.2.najk8sq1klac@node2 | |`-._`-...-` __...-.``-._|'` _.-'| Port: 6379 redis.1.lfkijq3fx3q8@node1 | ( ' , .-` | `, ) Running in standalone mode redis.2.najk8sq1klac@node2 | | `-._ `._ / _.-' | PID: 1 redis.1.lfkijq3fx3q8@node1 | |`-._`-...-` __...-.``-._|'` _.-'| Port: 6379 redis.2.najk8sq1klac@node2 | `-._ `-._ `-./ _.-' _.-' redis.1.lfkijq3fx3q8@node1 | | `-._ `._ / _.-' | PID: 1 ... 17.05

Slide 38

Slide 38 text

Under the Hood with Docker Swarm Mode by Drew Erny & Nishant Totla Today at 2:00pm in Ballroom D Deep dive session

Slide 39

Slide 39 text

Compose

Slide 40

Slide 40 text

docker stack subcommands added It is now possible to deploy services using compose files directly from docker • docker stack deploy --compose-file docker-compose.yml • docker stack list • docker stack rm Compose to Swarm 17.03

Slide 41

Slide 41 text

docker-compose.yml improvements Main differences form v2 are: • Removed the non-portable options • build • volume-from • … • Added Swarm specific options • replicas • mode • … Compose Format version 3 17.03

Slide 42

Slide 42 text

DEMO docker-compose.yml improvements Compose Format version 3 https://github.com/docker/example-voting-app/blob/master/docker-stack.yml 17.03

Slide 43

Slide 43 text

ports: - 3000 - 3000-3005 - 49100:22 - 9090-9091:8080-8081 - 127.0.0.1:8001:8001 - 127.0.0.1:5005-5010:5005-5010 - 6060:7060/udp Long syntax for ports docker-compose.yml improvements 17.04

Slide 44

Slide 44 text

ports: - target: 6060 published: 7060 protocol: udp Long syntax for ports docker-compose.yml improvements 17.04 Also added specific swarm mode options

Slide 45

Slide 45 text

volumes: - /var/lib/mysql - /opt/data:/var/lib/mysql - ./cache:/tmp/cache - datavolume:/var/lib/mysql - ~/configs:/etc/configs/:ro Long syntax for volumes docker-compose.yml improvements 17.04

Slide 46

Slide 46 text

volumes: - type: bind source: ~/configs target: /etc/configs read_only: true Long syntax for volumes docker-compose.yml improvements 17.04 Also added specific swarm mode options

Slide 47

Slide 47 text

Thanks, Don’t forget to vote! @vieux #dockercon Questions?