Top Banner
©2015, Amazon Web Services, Inc. or its affiliates. All rights reserved Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2 Brandon Chavis Solutions Architect
51
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

©2015, Amazon Web Services, Inc. or its affiliates. All rights reserved

Amazon EC2 Container Service:

Manage Docker-Enabled Apps in EC2Brandon Chavis

Solutions Architect

Page 2: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Agenda

• Containers

• Amazon EC2 Container Service

• Common patterns

• Demo

• Q&A

Page 3: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Containers

Page 4: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

What are containers?

• OS virtualization

• Process isolation

• Images

• Automation Server

Guest OS

Bins/Libs Bins/Libs

App2App1

Page 5: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Container advantages

PortableServer

Guest OS

Bins/Libs Bins/Libs

App2App1

Page 6: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Container advantages

FlexibleServer

Guest OS

Bins/Libs Bins/Libs

App2App1

Page 7: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Container advantages

FastServer

Guest OS

Bins/Libs Bins/Libs

App2App1

Page 8: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Container advantages

EfficientServer

Guest OS

Bins/Libs Bins/Libs

App2App1

Page 9: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

A container pipeline

Base

image

Patches

IT Operations

Utilities

Page 10: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

A container pipeline

Base

image

Patches

IT Operations

Ruby

Redis

Logger

Utilities

Page 11: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

A container pipeline

Base

image

Patches

IT Operations Developer

Ruby

Redis

Logger

Utilities

App

Page 12: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

A container pipeline

Base

image

Patches

IT Operations Developer

Ruby

Redis

Logger

Utilities

App

Page 13: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Demo

Page 14: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Server

Guest OS

Bins/Libs Bins/Libs

App2App1

Page 15: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2
Page 16: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Amazon ECS Benefits

Page 17: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Easily manage clusters for any scale

• Nothing to run

• Complete state

• Control and monitoring

• Scale

Page 18: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Flexible container placement

• Applications

• Batch jobs

• Multiple schedulers

Page 19: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Designed for use with other AWS services

• Elastic Load Balancing

• Amazon Elastic Block Store

• Amazon Virtual Private

Cloud

• AWS Identity and Access

Management (IAM)

• AWS CloudTrail

Page 20: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Extensible

• Comprehensive APIs

• Open source agent

• Custom schedulers

Page 21: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Common Patterns

Page 22: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Pattern 1: Services and applications

• Simple to model

• Micro services

• Blue/green

deployments

Phong Nguyen, Founder at Gilt

Groupe, said, "As we Dockerize

all our services, it is very

important for us to have a

platform that can help us speed

up deployments, automate our

services, and gain greater

efficiencies. The new service

scheduler and ELB integration

make Amazon ECS an excellent

platform for our services.”

Page 23: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Pattern 2: Batch jobs

• Share resource pools

• Ideal for bursty jobs

• Spot Instances

“We required a solution on which

we could securely and efficiently

deploy Docker containers to

encapsulate learner

programming assignment

submissions,” said Brennan

Saeta, architect at Coursera. “We

are using Amazon EC2 Container

Service to power our new

programming assignments

infrastructure for next-generation

On-Demand course platform.”

Page 24: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Amazon ECS Terminology

Page 25: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Amazon EC2 instances

Docker daemon

Amazon ECS agent

Key components: container instances

Page 26: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Regional

Resource pool

Grouping of container instances

Start empty, dynamically scalable

Key Components: clusters

Page 27: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Key components: task definitions

Volume definitions

Container definitions

Page 28: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Key components: task definitions

Shared data volume

PHP AppTime of day

app

Page 29: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Key components: task definitions{

"environment": [],

"name": "simple-demo",

"image": "my-demo",

"cpu": 10,

"memory": 500,

"portMappings": [

{

"containerPort": 80,

"hostPort": 80

}

],

"mountPoints": [

{

"sourceVolume": "my-vol",

"containerPath": "/var/www/my-

vol"

}

],

"entryPoint": [

"/usr/sbin/apache2",

"-D",

"FOREGROUND"

],

"essential": true

},

{

"name": "busybox",

"image": "busybox",

"cpu": 10,

"memory": 500,

"volumesFrom": [

{

"sourceContainer": "simple-demo"

}

],

"entryPoint": [

"sh",

"-c"

],

"command": [

"/bin/sh -c \"while true; do

/bin/date > /var/www/my-vol/date; sleep 1; done\""

],

"essential": false

}

Page 30: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

{

"environment": [],

"name": "simple-demo",

"image": “amazon/amazon-ecs-sample",

"cpu": 10,

"memory": 500,

"portMappings": [

{

"containerPort": 80,

"hostPort": 80

}

],

"mountPoints": [

{

"sourceVolume": "my-vol",

"containerPath": "/var/www/my-

vol"

}

],

"entryPoint": [

"/usr/sbin/apache2",

"-D",

"FOREGROUND"

],

"essential": true

},

Key components: task definitions[

{

"image": "mysql",

"name": "db",

"cpu": 10,

"memory": 500,

"essential": true,

"entryPoint": [

"/entrypoint.sh"

],

"environment": [

{

"name": "MYSQL_ROOT_PASSWORD",

"value": "pass"

}

],

"portMappings": []

}

]

Essential to our task

Create and mount volumes

Expose port 80 in container

to port 80 on host

10 CPU units (1024 is full CPU),

500 megabytes of memory

Page 31: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

{

"name": "busybox",

"image": "busybox",

"cpu": 10,

"memory": 500,

"volumesFrom": [

{

"sourceContainer": "simple-demo"

}

],

"entryPoint": [

"sh",

"-c"

],

"command": [

"/bin/sh -c \"while true; do

/bin/date > /var/www/my-vol/date; sleep 1; done\""

],

"essential": false

}

Key components: task definitions[

{

"image": "tutum/wordpress-stackable",

"name": "wordpress",

"cpu": 10,

"memory": 500,

"essential": true,

"links": [

"db"

],

"entryPoint": [

"/bin/sh",

"-c"

],

"environment": [

],

"portMappings": [

{

"containerPort": 80,

"hostPort": 80

}

]

},

]

From Docker Hub

Mount volume from other container

Command to exec

Page 32: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Key components: tasks

Container

Instance

Schedule

Shared data volume

PHP AppTime of day

app

Page 33: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Unit of work

Grouping of related containers

Run on container instances

Key components: tasks

Page 34: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Key components: Run a task

Good for short-lived

containers, e.g.

batch jobs

Page 35: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Key components: Create a service

Good for long-

running applications

and services

Page 36: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Key components: Create a service

• Load balance traffic across containers

• Automatically recover unhealthy containers

• Discover services

Elastic Load Balancing

Page 37: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Key components: Update a service

• Scale up

• Scale down

Elastic Load Balancing

Page 38: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Key components: Update a service

• Deploy new version

• Drain connections

Elastic Load Balancing

Page 39: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Key components: Update a service

• Deploy new version

• Drain connections

Elastic Load Balancing

Page 40: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Key components: Update a service

• Deploy new version

• Drain connections

Elastic Load Balancing

Page 41: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Demo

Page 42: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Typical user workflow

I want to run a service.

Page 43: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Typical user workflow

Run Instances

Amazon EC2

Use custom AMI with

Docker support and

ECS agent.

Instances register

with default cluster.

Page 44: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Typical user workflow

Create Task Definition

Declare resource

requirements for

containers

Page 45: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Typical user workflow

Create Service

Declare resource

requirements for

service

X 5

Elastic Load Balancing

Page 46: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Typical user workflow

Describe Service

Page 47: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Q&A

Page 48: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

Your Feedback is Important to AWSPlease complete the session evaluation. Tell us what you think!

Page 49: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

CHICAGO

Page 50: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

©2015, Amazon Web Services, Inc. or its affiliates. All rights reserved

Amazon EC2 Container Service: Manage

Docker-Enabled Apps in EC2

Brandon Chavis

Solutions Architect

Page 51: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2

CHICAGO

©2015, Amazon Web Services, Inc. or its affiliates. All rights reserved