amazon ec2 container service: manage docker-enabled apps in ec2
TRANSCRIPT
©2015, Amazon Web Services, Inc. or its affiliates. All rights reserved
Amazon EC2 Container Service:
Manage Docker-Enabled Apps in EC2Brandon Chavis
Solutions Architect
What are containers?
• OS virtualization
• Process isolation
• Images
• Automation Server
Guest OS
Bins/Libs Bins/Libs
App2App1
Easily manage clusters for any scale
• Nothing to run
• Complete state
• Control and monitoring
• Scale
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
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.”
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.”
Regional
Resource pool
Grouping of container instances
Start empty, dynamically scalable
Key Components: clusters
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
}
{
"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
{
"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
Key components: Create a service
• Load balance traffic across containers
• Automatically recover unhealthy containers
• Discover services
Elastic Load Balancing
Typical user workflow
Run Instances
Amazon EC2
Use custom AMI with
Docker support and
ECS agent.
Instances register
with default cluster.
Typical user workflow
Create Service
Declare resource
requirements for
service
X 5
Elastic Load Balancing
©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