containerization using docker

38
Containerization using Docker Vinod Doshi -- Sr. Manager QA & DevOps, Synerzip Softech India Pvt Ltd. -- Email : [email protected], [email protected] -- Twitter handle : https://twitter.com/vinodkdoshi -- Linkedin profile : https://in.linkedin.com/in/vinoddoshi Sumit Ramteke -- Senior Full Stack Developer, Synerzip Softech India Pvt Ltd. -- Email : [email protected],[email protected] -- Linkedin profile : https://www.linkedin.com/in/sumitramteke

Upload: vinod-doshi

Post on 20-Jan-2017

425 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Containerization using docker

Containerization using DockerVinod Doshi-- Sr. Manager QA & DevOps, Synerzip Softech India Pvt Ltd.-- Email : [email protected], [email protected] Twitter handle : https://twitter.com/vinodkdoshi-- Linkedin profile : https://in.linkedin.com/in/vinoddoshi

Sumit Ramteke-- Senior Full Stack Developer, Synerzip Softech India Pvt Ltd.-- Email : [email protected],[email protected] Linkedin profile : https://www.linkedin.com/in/sumitramteke

Page 2: Containerization using docker

Agenda

● VM’s , IAAS , PAAS and DevOps● Containers vs Virtual Machines● Container architecture and Micro Services● Docker features and Docker ecosystem● CI using Docker● Docker security considerations● Container Orchestration

Page 3: Containerization using docker

Virtualization

Page 4: Containerization using docker

IAAS and PAAS

Page 5: Containerization using docker

CODE REVIEWSAPPLICATION SERVERS CODE COVERAGE

DEPLOYMENT

MONITORING BUILD TOOLS

CLOUD

SOURCE CODE

WEB SERVERS

CONTINUOUS INTEGRATION

LOGGING

RDBMS

NOSQL

ARTIFACTORYCONFIGURATION

MANAGEMENT

CACHING

VIRTUALIZATION

ISSUE MANAGEMENT

CONTAINERIZATION

Page 6: Containerization using docker

Containers vs VM’s

Page 7: Containerization using docker

Containers

● Run in user space● Have an isolated user space● OS architecture is shared ● Only parts created are bins/libs● Lightweight compared to VM’s

Page 8: Containerization using docker

Docker

● Open source project ● Linux namespaces & control groups● Union File System ● Lightweight and fast● Usability● Easy to Modularize apps● Easy to scale apps● Dockerhub as central repository

Page 9: Containerization using docker

Micro services

Page 10: Containerization using docker

Why Micro Services

● Service oriented architecture● Loosely coupled, Tightly aligned● High Developer productivity● Regressions easy to find, correct● Releases have zero overhead● Rapid iteration using real consumer metrics● Very less overhead in doing a new release● Continuous Delivery

Page 11: Containerization using docker

Containerization Technologies

● CoreOS, Rocket● Docker● Redhat containers● AWS PAAS● GCE PAAS● AWS Lambda

Page 12: Containerization using docker

Docker setup

● Ubuntu○ Installation using apt-get○ 1.12 aws images on beta signup

● Windows○ Docker Toolbox○ Docker 1.12

● Mac○ Docker Toolbox○ Docker 1.12

Page 13: Containerization using docker

Dockerhub

● Dockerhub● Public repository● Private repository● Official images● User submitted images● Private docker infrastructure

Page 14: Containerization using docker

Docker images

● What is a docker image● Creating a container from an image● Listing images● Removing images● Removing images● Searching docker images

Page 15: Containerization using docker

Docker containers

● Docker hello world● Launching container as daemon● Listing containers● Logging into container● Docker start, stop● Docker pause, unpause● Docker inspect● Deleting container

Page 16: Containerization using docker

Docker resource allocation

● -m, --memory=""● --memory-swap=""● --cpuset-cpus=""● -c, --cpu-shares

Page 17: Containerization using docker

Docker layers

● List of read-only layers ● Layers have file system differences● New Container adds thin, writable layer

Page 18: Containerization using docker

Building images

● Modifying containers● Creating an image● Registering an image

Page 19: Containerization using docker

Docker file

● Structure of Docker file● Example Docker file● Building image using a Docker file● Docker file instructions

○ From, Maintainer, Copy○ Add, Env, User, Workdir○ Volume, Expose, Run○ Cmd, Entrypoint, Onbuild

Page 20: Containerization using docker

Docker Networking

● Container ip address● Port mapping● Binding to specific ip address● Auto-generating host port

Page 21: Containerization using docker

Linking containers

● --link option● Exporting variables● Enabling networking

Page 22: Containerization using docker

Sharing data

● Containers are temporal● Data volumes● Sharing host data● Data only containers● Data volumes from other containers

Page 23: Containerization using docker

Docker compose

● Multi container application● Installing Docker compose● Structure of compose file● Define logical application● Docker-compose.yml file● Docker-compose command● Launching multi-container app

Page 24: Containerization using docker

Debugging containerized applications

● exec● ps● top● stats● logs● Inspect

Page 25: Containerization using docker

CI and deployment using Jenkins

● Using Jenkins for CI● Docker plugins● ssh build and deployment

Page 26: Containerization using docker

Securing Docker containers

● VM vs Docker containers● Resource Isolation● Cgroups● Non root user● A trusted repository of software● Filesystems need to be read-only● Copy on write● Security-Enhanced Linux

Page 27: Containerization using docker

Orchestration

● Running containers on a cluster● High availability● Load balancing and Auto scaling● Mesos, Marathon (Apache project)● Docker Swarm (native Docker v 1.12 )● GCE Kubernetes PAAS (Google project)● AWS ECS PAAS ● AWS containers on Beanstalk PAAS

Page 28: Containerization using docker

Amazon EC2 Container Service (ECS)

Manage and Deploy Docker containers at Scale

Page 29: Containerization using docker

ECS: Awesome Features

● Docker Compatibility

● Managed Clusters

● Task Definitions

● Programmatic Control

● Scheduling

● Container Deployments

● Local Development

● Monitoring

● Logging

● Repository Support

Page 30: Containerization using docker

ECS: Example

Page 31: Containerization using docker

Docker Swarm: A Native Cluster

Page 32: Containerization using docker

App Architecture

Page 33: Containerization using docker

Swarm Cluster Architecture

Page 34: Containerization using docker

Final Result

Page 35: Containerization using docker

Mesos, Marathon

● Apache project● https://mesosphere.github.io/marathon/● http://mesos.apache.org ● Container orchestration platform

Page 36: Containerization using docker

Mesos Master, Mesos Slave, Zookeeper

Page 37: Containerization using docker

Mesos, Marathon cluster Demo

● Setup on a VM● Mesos Master dashboard● Marathon dashboard● Launching a hello world job● HA, Auto scaling