Running Docker In Production Using Amazon ECS

Swetha Ravindranath
Edureka
Published in
8 min readJun 27, 2019

I’m sure you’ve heard about the “Docker hype” in the tech industry these days. Docker has made running applications on any kind of environment super easy. Do you know what makes Docker even more efficient? Using it with Amazon’s ECS. This article on Amazon ECS gives a detailed explanation of using Docker in production using Amazon ECS.

Agenda For This Article:

  • Introduction to Docker
  • Introduction To Amazon ECS
  • How ECS works
  • Features And Benefits of using ECS
  • Demo: Run A Docker Image In Production Environment Using Amazon ECS

Introduction to Docker

Docker is a software development platform. It’s based on the concept of containerization. It wraps the application along with all its dependencies into a single container image. This container can be deployed on any platform to run that application. So basically these applications run exactly the same regardless of where they are running or on what system they’re running on. It uses an online cloud repository called DockerHub to store all these container images.

Introduction to Amazon ECS

Now that you’ve understood Docker, let’s have a look at ECR. As part of container services platform, AWS provides Amazon EC2 Container Registry (Amazon ECR). Its a fully managed docker container registry.

Now you have your containers, all you need is a platform to host them. This is where ECS come into the picture.

ECS stands for Elastic Container Service. It’s a container management service. Running, stopping or managing Docker containers on an ECS cluster is like taking a walk in the park. You can launch, stop or scale any container-based applications by just making a few simple API calls.

I’m sure you guys would have heard the term microservices which is pretty hot in the tech market right now. Amazon ECS can let you create consistent deployment by building sophisticated application architectures on the microservices model.

ECS also keeps a track of your instances along with their resources. In the above diagram, There is a request to run two containers. ECS will look for instances that have the resources to run these containers, download the containers from the registry and deploy them on the containers accordingly.

How ECS Works

Now that you’ve understood the theoretical concepts let’s dig a little deeper into how ECS works. Let’s take a very common scenario, say you’re running an application that uses two docker container. For instance, one container has the actual application and the other has all the dependencies. You need both of these to successfully run the application.

Amazon ECS consists of the following:

Task Definition

Task definition is basically the blueprint describing the docker containers that are used to run the application. In our case, it will be the two docker containers, details of the images used, the CPU memory to be allocated, environment variables to be declared and used, ports to expose, etc.

Task

A task is an instance of the task definition. It runs the container along with the container details mentioned in the task definition. Multiple tasks are created by a single class definition as and when required.

Service

Service defines the minimum and the maximum tasks that are running from a single task definition at any given point. In our example, if there is one task running from a task definition and if the CPU gets maxed out, ECS adds another task. At the point, the service would be 2 as two tasks are running from one task definition.

ECS Container Instance And ECS Container Agent

Every docker container will run on an EC2 instance. Such EC2 instances are called ECS Container Instance.

Every ECS container instance will have an ECS Container Agent running on it. This agent communicates between the instance and ECS which helps in managing the running containers or even adding new ones.

Cluster

We now have the task definition, tasks, and services. All we need is a platform to hosts these. That platform is the cluster. A cluster is a group of ECS container instances. A cluster can run many services. For instance, you have multiple applications as a part of your project, you can run several of them on a single cluster. This reduces the wastage of the resources and indirectly saves your money.

Features And Benefits Of Using ECS

  • It lets you run application containers in a highly available manner across multiple Availability Zones within a Region
  • It lets you use containers without infrastructure management.
  • You can containerize anything and everything and let ECS manage it.
  • It’s super secure as you can store your container images on EC2 container registry which is very safe as your images are encrypted at rest.
  • Another amazing feature of ECS which I honestly love is that it keeps the IAM roles separate for every task. The control access to every task is very guided.

Demo: Run A Docker Image In A production Environment Using Amazon ECS

In this demo, I’m going to show you how to use Amazon ECS and run a docker image on it. Let’s get started.

Go to Amazon’s login page and sign in if you already have an account. If you don’t, then go ahead and create a free account. This is the console that you’ll see once you’ve logged in.

Type in “ECS” and click on that service. You’ll see a Get started button if you haven’t created a cluster before. Go ahead by clicking on Get Started.

Running a docker image on AWS ECS has 4 main steps, Container definition, Task definition, Service, Cluster.

Configure Container Definition: Select an image for your container. You have 4 options — A sample application image, Nginx image, tomcat-webserver, and a custom image.

For this demo, I’ve chosen the sample-app.

Click on edit on the top right corner if you wish to change the configuration.

You can edit the container name, the image to use, Memory limits, Port mappings, Health check configurations, Environment configurations, Container timeout configurations, Network settings, Storage and Logging configurations, Resource limits, and Docker Labels. For this demo, I’ve used all the default configurations.

Configure Task Definition: It consists of Task definition name, Network mode, Task execution role, capabilities, task memory, and Task CPU.

You can click on Edit on the top right corner and configure according to your needs. For this demo, I’m using all the default configurations. Once you’re done, click on Next on the bottom right corner.

Configure Service: You can go ahead and change the Service name, Number of desired tasks, Security Group and Select the Load balancer type. For this demo, I haven’t used a load balancer. Click on Next.

Configure Cluster: Configure your cluster by adding a Cluster name and click on Next.

Review: Once you’ve configured everything, you should see something like this.

Review everything and click on Create on the bottom right corner. All the services will now get created. This might take about 10 mins.

Once everything has the completed status, click on View Services

You’ll see something like this. It’s going to show you your cluster details, task definition and an option to delete and update it.

You can check further details like the VPC, Subnets, Tasks, Events, Autoscaling, Deployments, Metrics, Tags and Logs.

Now go ahead and click on task to check out the deployed container.

Click on the task name as shown below.

Click on ENI Id under the Network section.

You’ll be taken to the Network Interface page which would look like this:

Scroll down and you’ll see your IPV4 Public IP. Copy it.

Paste it on any browser like a URL. You’ll see the docker container output there. You’ll see your sample-app.

This was just a sample-app. You can run any kind of application or any kind of Docker image in just a few steps.

This brings us to the end of this Amazon ECS article. I hope you have a better understanding of how Docker works on Windows. Stay tuned for more blogs on the most trending technologies. If you wish to check out more articles on the market’s most trending technologies like Artificial Intelligence, Python, Ethical Hacking, then you can refer to Edureka’s official site.

Do look out for other articles in this series which will explain the various other aspects of DevOps.

1. DevOps Tutorial

2. Git Tutorial

3. Jenkins Tutorial

4. Docker Tutorial

5. Ansible Tutorial

6. Puppet Tutorial

7. Chef Tutorial

8. Nagios Tutorial

9. How To Orchestrate DevOps Tools?

10. Continuous Delivery

11. Continuous Integration

12. Continuous Deployment

13. Continuous Delivery vs Continuous Deployment

14. CI CD Pipeline

15. Docker Compose

16. Docker Swarm

17. Docker Networking

18. Ansible Vault

19. Ansible Roles

20. Ansible for AWS

21. Jenkins Pipeline

22. Top Docker Commands

23. Git vs GitHub

24. Top Git Commands

25. DevOps Interview Questions

26. Who Is A DevOps Engineer?

27. DevOps Life cycle

28. Git Reflog

29. Top DevOps Skills That Organizations Are Looking For

30.Waterfall vs Agile

31. Maven For Building Java Applications

32. Jenkins CheatSheet

33. Ansible Cheat Sheet

34. Ansible Interview Questions And Answers

35. 50 Docker Interview Questions

36. Agile Methodology

37. Jenkins Interview Questions

38. Git Interview Questions

39. Docker Architecture

40. Linux commands Used In DevOps

41. Jenkins vs Bamboo

42. Nagios Interview Questions

43.DevOps Real-Time Scenarios

44.Difference between Jenkins and Jenkins X

45.Docker for Windows

46.Git vs Github

Originally published at https://www.edureka.co on May 31, 2021.

--

--