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?

  • How to register EC2 Instance to ECS cluster?
  • How to add already existing ECS Instance to newly created ECS Cluster
  • Docker push to AWS ECR private repo failing with malformed JSON
  • How to delete untagged images from AWS ECR Container Registry
  • how to setup continuos deployment from docker-hub to AWS ECS?
  • How to deploy AngularJS app using nginx + docker to Elastic Beanstalk?
  • Apt-get not working behind firewall even setting Fiddler as a tunnel
  • docker odoo 9 install pika error
  • docker-compose rails rake db:reset fails, “cannot drop the currently open database”
  • Docker-swarm >> Cannot connect to the docker engine endpoint
  • How to access docker web app through ssh?
  • Working with HDFS within docker container
  • 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.