50
How to easy deploy app into any cloud IPEX Meetup Brno, 9.3.2016 1

How to easy deploy app into any cloud

Embed Size (px)

Citation preview

Page 1: How to easy deploy app into any cloud

How to easy deploy appinto any cloud

IPEX Meetup Brno, 9.3.2016 1

Page 2: How to easy deploy app into any cloud

Ladislav Prskavec

4 Twitter: @abtris

4 Blog: http://blog.prskavec.net

4 Talking and mentoring Docker since 2013IPEX Meetup Brno, 9.3.2016 2

Page 3: How to easy deploy app into any cloud

IPEX Meetup Brno, 9.3.2016 3

Page 4: How to easy deploy app into any cloud

What's Docker?

IPEX Meetup Brno, 9.3.2016 4

Page 5: How to easy deploy app into any cloud

Analogyfrom

logistics

IPEX Meetup Brno, 9.3.2016 5

Page 6: How to easy deploy app into any cloud

Goods, wares

IPEX Meetup Brno, 9.3.2016 6

Page 7: How to easy deploy app into any cloud

Containers

IPEX Meetup Brno, 9.3.2016 7

Page 8: How to easy deploy app into any cloud

Why Docker?

IPEX Meetup Brno, 9.3.2016 8

Page 9: How to easy deploy app into any cloud

Fastand

scalableIPEX Meetup Brno, 9.3.2016 9

Page 10: How to easy deploy app into any cloud

Build once,run anywhere

IPEX Meetup Brno, 9.3.2016 10

Page 11: How to easy deploy app into any cloud

Configure once, run anywhere

IPEX Meetup Brno, 9.3.2016 11

Page 12: How to easy deploy app into any cloud

Example of using Docker4 build documentation in Sphinx with latex support

4 executing code in many different programming languages without requiring a single compiler or script interpreter on your machine - docker exec

4 running gui app in docker at linux

IPEX Meetup Brno, 9.3.2016 12

Page 13: How to easy deploy app into any cloud

Example of using Docker4 development without install ing many tools at local machine

4 Vagrant, Otto dev

4 continues integration using docker

4 Jenkins, TravisCI, CircleCI

4 DevOps platform for build, deploy and manage apps across any cloud

IPEX Meetup Brno, 9.3.2016 13

Page 14: How to easy deploy app into any cloud

IPEX Meetup Brno, 9.3.2016 14

Page 15: How to easy deploy app into any cloud

Docker Engine

IPEX Meetup Brno, 9.3.2016 15

Page 16: How to easy deploy app into any cloud

Docker Engine

IPEX Meetup Brno, 9.3.2016 16

Page 17: How to easy deploy app into any cloud

VM vs Docker

IPEX Meetup Brno, 9.3.2016 17

Page 18: How to easy deploy app into any cloud

Containers and imagesdocker run hello-world

IPEX Meetup Brno, 9.3.2016 18

Page 19: How to easy deploy app into any cloud

Docker Remote API4 client & server in Docker

4 docker ps

4 docker build

4 docker push/pull

4 docker run/stop

4 docker inspect

IPEX Meetup Brno, 9.3.2016 19

Page 20: How to easy deploy app into any cloud

Docker lifecycle4 a build produces an immutable image

4 a container is as instance of the image

IPEX Meetup Brno, 9.3.2016 20

Page 21: How to easy deploy app into any cloud

Docker lifecycle

IPEX Meetup Brno, 9.3.2016 21

Page 22: How to easy deploy app into any cloud

Container lifecycle

IPEX Meetup Brno, 9.3.2016 22

Page 23: How to easy deploy app into any cloud

DockerfileFROM alpine:3.3

RUN apk add --no-cache curl

ENV DOCKER_BUCKET get.docker.comENV DOCKER_VERSION 1.10.2ENV DOCKER_SHA256 3fcac4f30e1c1a346c52ba33104175ae4ccbd9b9dbb947f56a0a32c9e401b768

RUN curl -fSL "https://${DOCKER_BUCKET}/builds/Linux/x86_64/docker-$DOCKER_VERSION" -o /usr/local/bin/docker \ && echo "${DOCKER_SHA256} /usr/local/bin/docker" | sha256sum -c - \ && chmod +x /usr/local/bin/docker

COPY docker-entrypoint.sh /usr/local/bin/

ENTRYPOINT ["docker-entrypoint.sh"]CMD ["sh"]

IPEX Meetup Brno, 9.3.2016 23

Page 24: How to easy deploy app into any cloud

DockerHub

IPEX Meetup Brno, 9.3.2016 24

Page 25: How to easy deploy app into any cloud

IPEX Meetup Brno, 9.3.2016 25

Page 26: How to easy deploy app into any cloud

Docker tools

IPEX Meetup Brno, 9.3.2016 26

Page 27: How to easy deploy app into any cloud

Docker compose

4 defining and running multi-container applications with Docker

IPEX Meetup Brno, 9.3.2016 27

Page 28: How to easy deploy app into any cloud

docker-compose.ymlweb: build: . ports: - "5000:5000" volumes: - .:/code links: - redisredis: image: redis

IPEX Meetup Brno, 9.3.2016 28

Page 29: How to easy deploy app into any cloud

Docker machine4 Machine lets you create Docker hosts on your

computer, on cloud providers, and inside your own data center.

4 part of Docker toolbox

4 replacement for boot2docker

IPEX Meetup Brno, 9.3.2016 29

Page 30: How to easy deploy app into any cloud

Docker swarm

4 Docker Swarm is native clustering for Docker.

4 Swarm serves the standard Docker API, so any tool which already communicates with a Docker daemon can use Swarm to transparently scale to multiple hosts: Dokku, Compose, Krane, Flynn, Deis, DockerUI, Shipyard, Drone, Jenkins... and, of course, the Docker client itself.

IPEX Meetup Brno, 9.3.2016 30

Page 31: How to easy deploy app into any cloud

Kitematic4 desktop GUI for Docker

4 Mac and Windows only

IPEX Meetup Brno, 9.3.2016 31

Page 32: How to easy deploy app into any cloud

Docker Trusted Registry (DTR)4 private dedicated image registry

IPEX Meetup Brno, 9.3.2016 32

Page 33: How to easy deploy app into any cloud

Docker Cloud4 Deploy and scale any application to your cloud in

seconds, with just a few clicks

IPEX Meetup Brno, 9.3.2016 33

Page 34: How to easy deploy app into any cloud

IPEX Meetup Brno, 9.3.2016 34

Page 35: How to easy deploy app into any cloud

IPEX Meetup Brno, 9.3.2016 35

Page 36: How to easy deploy app into any cloud

Docker isn't just Docker Inc

IPEX Meetup Brno, 9.3.2016 36

Page 37: How to easy deploy app into any cloud

Alternatives for Docker Registry4 Amazon EC2 Container Registry

4 Google Container Registry

4 Quay Enterprise

4 Artifactory

4 Nexus

4 Bitnami Container Images for Docker (beta)IPEX Meetup Brno, 9.3.2016 37

Page 38: How to easy deploy app into any cloud

Yours private registry4 storage at S3

docker run \ -d \ -p 5000:5000 \ --restart=always \ --name registry \ registry:2

IPEX Meetup Brno, 9.3.2016 38

Page 39: How to easy deploy app into any cloud

Open Container ekosystem

IPEX Meetup Brno, 9.3.2016 39

Page 40: How to easy deploy app into any cloud

IPEX Meetup Brno, 9.3.2016 40

Page 41: How to easy deploy app into any cloud

IPEX Meetup Brno, 9.3.2016 41

Page 42: How to easy deploy app into any cloud

wercker.yml example# The container definition we want to use for developing our appbox: golang# Defining the dev pipelinedev: steps: - internal/watch: code: | go build ./... ./source reload: true

IPEX Meetup Brno, 9.3.2016 42

Page 43: How to easy deploy app into any cloud

IPEX Meetup Brno, 9.3.2016 43

Page 44: How to easy deploy app into any cloud

Building a Go app for scratch containersbuild: box: google/golang steps:

# Test the project - script: name: go test code: go test ./...

# Statically build the project - script: name: go build code: CGO_ENABLED=0 go build -a -ldflags '-s' -installsuffix cgo -o app .

# Copy binary to a location that gets passed along to the deploy pipeline - script: name: copy binary code: cp app "$WERCKER_OUTPUT_DIR"

IPEX Meetup Brno, 9.3.2016 44

Page 45: How to easy deploy app into any cloud

Docker in AWS4 Elastic Beanstalk

4 EC2 Container Service (ECS)

4 EC2 with Swarm, Mesos or Kubernetes

IPEX Meetup Brno, 9.3.2016 45

Page 46: How to easy deploy app into any cloud

IPEX Meetup Brno, 9.3.2016 46

Page 47: How to easy deploy app into any cloud

IPEX Meetup Brno, 9.3.2016 47

Page 48: How to easy deploy app into any cloud

Apache Messos4 Scalability to 10,000s of nodes

4 Fault-tolerant replicated master and slaves using ZooKeeper

4 Support for Docker containers

4 Native isolation between tasks with Linux Containers

4 Multi-resource scheduling (memory, CPU, disk, and ports)

4 Java, Python and C++ APIs for developing new parallel applications

4 Web UI for viewing cluster state

IPEX Meetup Brno, 9.3.2016 48

Page 49: How to easy deploy app into any cloud

Notes at the end4 don't use Docker as VM

4 build & production images

4 tag every image using in production (not just latest)

4 big difference between languages (NodeJS & Go)

4 don't use latest Docker versions in production

4 try use dockerlint for your DockerfilesIPEX Meetup Brno, 9.3.2016 49

Page 50: How to easy deploy app into any cloud

Credits4 boat-containers.jpg 2

4 computer-scrap.jpg [^3]

4 vm-vs-docker.png [^4]

4 docker logos [^5]

4 formule_one.jpg [^6]

2 https://www.flickr.com/photos/41864721@N00/3451530961/[^3]: https://www.flickr.com/photos/7362086@N02/2019666131/[^4]: http://www.jayway.com/wp-content/uploads/2015/03/vm-vs-docker.png[^5]: https://www.docker.com/brand-guidelines

IPEX Meetup Brno, 9.3.2016 50