These days i have the pleasure to upgrade an application running on AWS Elastic Beanstalk from platform Multi-container Docker to new platform Docker. The former is based on Amazon Linux 1 (AL1) while the latter runs on Amazon Linux 2 (AL2). I follow this guide.
I have encountered the following advantages so far:
- links between containers are now fully bidirectional: on AL1 those links could only be defined and used in one direction. If you wanted bidirectional communication you had to implement service discovery yourself
- the limit on 10 containers per app is gone: in my tests i could easily spin up 12 containers.
- apparently this limitation came from the automatic translation of an Elastic Beanstalk app into a task definition. The limitation is documented as task definition max containers.
- on AL1 one got the following error:
frontend-staging - ERROR: Service:AmazonECS, Code:ClientException, Message:Too many containers., Class:com.amazonaws.services.ecs.model.ClientException
- i could restart single containers without affecting the other running containers: on AL1 this would cause a restart of all containers for reasons unknown to me.
- simplified logging – all services log to
/var/log/eb-docker/containers/eb-current-app/eb-stdouterr.log
which can be streamed to CloudWatch.