Why are Docker build commands running so slow in Elastic Beanstalk?

EB was complaining that my build was timing out, so I ssh’d into an instance and decided to run docker build myself to see what was happening. Every step, even something as simple as a mkdir takes ages to run. Even a WORKDIR stalls for at least a minute or two before executing.

On my local machine these are instant. What is going on?

  • AWS Docker deployment
  • How do I get AWS credentials in the AWS ECS docker container?
  • Running Spring Boot Microservices using Docker and AWS ECS
  • How to limit aws instance ip range generated by ec2-instance create cli script?
  • Salt minion inside docker container?
  • 'aws configure' in docker container will not use environment variables or config files
  • Deployment of new version to containers
  • Cannot connect to wss://ip:5063 when deploy restcomm docker to public server
  • Docker - Full functional WordPress (WP+DB+PHPMyAdmin)
  • Node cli program not working in windows machine
  • Is there a way to get bazel to use sandbox directories when sandboxing is not supported?
  • Trouble connecting to Docker registry stored on Nexus 3 Preview on Azure VM
  • 2 Solutions collect form web for “Why are Docker build commands running so slow in Elastic Beanstalk?”

    Same issue here with an Ubuntu machine running on AWS. Turns out the the key to the solution was switching from devicemapper to aufs storage backend.

    First, run the following command to figure out which storage backend your currently use:

    docker info | grep Storage

    If it says devicemapper, you probably found the reason for the slowness.

    Here is the prodecure for switching to the aufs backend in Ubuntu, taken from here:

    1. sudo apt-get install -y -q linux-image-extra-$(uname -r)
    2. sudo service docker restart

    Note that you will have to rebuild all your existing images / containers, as they will be wiped when you switch to aufs.

    Sorry to know you are facing this issue.
    Elastic Beanstalk environment creation involves creation of lots of resources like autoscaling group, EC2 instances, security groups, Elastic Load Balancer etc. After that software is installed on your beanstalk instances. I am assuming you are only talking about the slowness of software installation (docker build) on beanstalk.

    If you just run mkdir that should not be very slow. It should be reasonably fast.

    However if you think that docker build overall is running very slow that could be because of IO intensive operations.

    One thing you can try is using EBS provisioned IOPs with Elastic Beanstalk.
    Read more about SSD instances here.

    Can you try launching a new environment with SSD instances and see if docker build is still slow? If you can show an example dockerfile that takes a long time to build, I can try it out.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.