how to easy deploy app into any cloud
TRANSCRIPT
How to easy deploy appinto any cloud
IPEX Meetup Brno, 9.3.2016 1
Ladislav Prskavec
4 Twitter: @abtris
4 Blog: http://blog.prskavec.net
4 Talking and mentoring Docker since 2013IPEX Meetup Brno, 9.3.2016 2
IPEX Meetup Brno, 9.3.2016 3
What's Docker?
IPEX Meetup Brno, 9.3.2016 4
Analogyfrom
logistics
IPEX Meetup Brno, 9.3.2016 5
Goods, wares
IPEX Meetup Brno, 9.3.2016 6
Containers
IPEX Meetup Brno, 9.3.2016 7
Why Docker?
IPEX Meetup Brno, 9.3.2016 8
Fastand
scalableIPEX Meetup Brno, 9.3.2016 9
Build once,run anywhere
IPEX Meetup Brno, 9.3.2016 10
Configure once, run anywhere
IPEX Meetup Brno, 9.3.2016 11
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
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
IPEX Meetup Brno, 9.3.2016 14
Docker Engine
IPEX Meetup Brno, 9.3.2016 15
Docker Engine
IPEX Meetup Brno, 9.3.2016 16
VM vs Docker
IPEX Meetup Brno, 9.3.2016 17
Containers and imagesdocker run hello-world
IPEX Meetup Brno, 9.3.2016 18
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
Docker lifecycle4 a build produces an immutable image
4 a container is as instance of the image
IPEX Meetup Brno, 9.3.2016 20
Docker lifecycle
IPEX Meetup Brno, 9.3.2016 21
Container lifecycle
IPEX Meetup Brno, 9.3.2016 22
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
DockerHub
IPEX Meetup Brno, 9.3.2016 24
IPEX Meetup Brno, 9.3.2016 25
Docker tools
IPEX Meetup Brno, 9.3.2016 26
Docker compose
4 defining and running multi-container applications with Docker
IPEX Meetup Brno, 9.3.2016 27
docker-compose.ymlweb: build: . ports: - "5000:5000" volumes: - .:/code links: - redisredis: image: redis
IPEX Meetup Brno, 9.3.2016 28
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
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
Kitematic4 desktop GUI for Docker
4 Mac and Windows only
IPEX Meetup Brno, 9.3.2016 31
Docker Trusted Registry (DTR)4 private dedicated image registry
IPEX Meetup Brno, 9.3.2016 32
Docker Cloud4 Deploy and scale any application to your cloud in
seconds, with just a few clicks
IPEX Meetup Brno, 9.3.2016 33
IPEX Meetup Brno, 9.3.2016 34
IPEX Meetup Brno, 9.3.2016 35
Docker isn't just Docker Inc
IPEX Meetup Brno, 9.3.2016 36
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
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
Open Container ekosystem
IPEX Meetup Brno, 9.3.2016 39
IPEX Meetup Brno, 9.3.2016 40
IPEX Meetup Brno, 9.3.2016 41
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
IPEX Meetup Brno, 9.3.2016 43
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
Docker in AWS4 Elastic Beanstalk
4 EC2 Container Service (ECS)
4 EC2 with Swarm, Mesos or Kubernetes
IPEX Meetup Brno, 9.3.2016 45
IPEX Meetup Brno, 9.3.2016 46
IPEX Meetup Brno, 9.3.2016 47
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
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
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