amazon ec2 container service: manage docker-enabled apps in ec2
TRANSCRIPT
![Page 1: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/1.jpg)
©2015, Amazon Web Services, Inc. or its affiliates. All rights reserved
Amazon EC2 Container Service:
Manage Docker-Enabled Apps in EC2Chris Barclay
Amazon EC2 Principal Product Manager, AWS
![Page 2: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/2.jpg)
Agenda
Containers
EC2 Container Service
Common patterns
Demo
Q&A
![Page 3: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/3.jpg)
Containers
![Page 4: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/4.jpg)
What are containers?
OS virtualization
Process isolation
Automation
ImagesServer
Guest OS
Bins/Libs Bins/Libs
App2App1
![Page 5: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/5.jpg)
Container advantages
Portable
Server
Guest OS
Bins/Libs Bins/Libs
App2App1
![Page 6: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/6.jpg)
Container advantages
Flexible
Server
Guest OS
Bins/Libs Bins/Libs
App2App1
![Page 7: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/7.jpg)
Container advantages
Fast
Server
Guest OS
Bins/Libs Bins/Libs
App2App1
![Page 8: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/8.jpg)
Container advantages
Efficient
Server
Guest OS
Bins/Libs Bins/Libs
App2App1
![Page 9: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/9.jpg)
A container pipeline
IT Operations
Base
Image
PatchesUtilities
![Page 10: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/10.jpg)
A container pipeline
IT Operations
Base
Image
PatchesUtilities
Ruby
Redis
Logger
![Page 11: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/11.jpg)
A container pipeline
IT Operations Developer
Base
Image
PatchesUtilities
Ruby
Redis
Logger
App
![Page 12: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/12.jpg)
A container pipeline
Base
Image
PatchesUtilities
Ruby
Redis
Logger
App
IT Operations Developer
![Page 13: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/13.jpg)
Demo
![Page 14: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/14.jpg)
Server
Guest OS
Bins/Libs Bins/Libs
App2App1
![Page 15: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/15.jpg)
![Page 16: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/16.jpg)
EC2 Container Service Benefits
![Page 17: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/18.jpg)
Flexible container placement
Applications
Batch jobs
Multiple schedulers
![Page 19: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/19.jpg)
Designed for use with other AWS services
Elastic Load Balancing
Amazon Elastic Block Store
Amazon Virtual Private Cloud
AWS Identity and Access Management
AWS CloudTrail
![Page 20: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/20.jpg)
Extensible
Comprehensive APIs
Open source agent
Custom schedulers
![Page 21: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/21.jpg)
Common Patterns
![Page 22: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/22.jpg)
Pattern 1: services and applications
Simple to model
Decompose to smaller (micro) services
Blue/green deployments
![Page 23: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/23.jpg)
Pattern 2: batch jobs
Share pools of resources
APIs provide cluster state
Auto Scaling, Spot, Reserved Instances
![Page 24: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/24.jpg)
EC2 Container Service Terminology
![Page 25: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/25.jpg)
Amazon EC2 instances
Docker daemon
Amazon ECS agent
Key components: container instances
![Page 26: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/26.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/27.jpg)
Key components: task definitions
Volume Definitions
Container Definitions
![Page 28: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/28.jpg)
Key components: task definitions
Shared Data Volume
PHP App Time of day App
![Page 29: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/29.jpg)
Key components: task definitions
Container
Instance
Schedule
Shared Data Volume
PHP App Time of day App
Shared Data Volume
PHP
App
Time of
day
App
![Page 30: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/30.jpg)
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 31: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/31.jpg)
{
"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 32: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/32.jpg)
{
"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 33: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/33.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/34.jpg)
Key components: run a task
Good for short-lived
containers, for
example batch jobs
![Page 35: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/35.jpg)
Key components: create a service
Good for long-
running applications
and services
![Page 36: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/36.jpg)
Key components: create a service
Load balance traffic across containers
Automatically recover unhealthy containers
Discover services
Shared Data Volume
PHP
App
Time of
day
App
Shared Data Volume
PHP
App
Time of
day
App
Shared Data Volume
PHP
App
Time of
day
App
Elastic Load Balancing
![Page 37: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/37.jpg)
Key components: create a service
Scale up or scale down
Elastic Load Balancing
Shared Data Volume
PHP
App
Time of
day
App
Shared Data Volume
PHP
App
Time of
day
App
Shared Data Volume
PHP
App
Time of
day
App
Shared Data Volume
PHP
App
Time of
day
App
![Page 38: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/38.jpg)
Key components: create a service
Deploy new version
Elastic Load Balancing
Shared Data Volume
PHP
App
Time of
day
App
Shared Data Volume
PHP
App
Time of
day
App
Shared Data Volume
PHP
App
Time of
day
App
![Page 39: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/39.jpg)
Key components: create a service
Deploy new version
Shared Data Volume
PHP
App
Time of
day
App
Shared Data Volume
PHP
App
Time of
day
App
Shared Data Volume
PHP
App
Time of
day
App
Elastic Load Balancing
![Page 40: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/40.jpg)
Key components: create a service
Deploy new version
Shared Data Volume
PHP
App
Time of
day
App
Shared Data Volume
PHP
App
Time of
day
App
Elastic Load Balancing
Shared Data Volume
PHP
App
Time of
day
App
![Page 41: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/41.jpg)
Demo
![Page 42: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/42.jpg)
Typical user workflow
I want to run a service
![Page 43: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/43.jpg)
Typical user workflow
Run Instances Amazon
EC2
Use custom AMI with
Docker support and
ECS Agent. Instances
will register with
default cluster.
![Page 44: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/44.jpg)
Typical user workflow
Create Task Definition
Declare resource
requirements for
containers
Shared Data Volume
PHP AppTime of day
App
![Page 45: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/45.jpg)
Typical user workflow
Create Service
Declare resource
requirements for
service
Shared Data Volume
PHP AppTime of day
App
Elastic
Load
Balancing
X 5
![Page 46: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/46.jpg)
Typical user workflow
Describe Service
![Page 47: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/47.jpg)
Q&A
![Page 48: Amazon EC2 Container Service: Manage Docker-Enabled Apps in EC2](https://reader033.vdocuments.site/reader033/viewer/2022042716/55a9601a1a28ab6b308b47a5/html5/thumbnails/48.jpg)
SAN FRANCISCO