2

I'm working on a [legacy] project with a build pipeline that generates RPMs that are picked up by Spinnaker to Bake an AMI that will in turn run on an AWS EC2 machine.

I proposed to use Docker instead of RPM+AMI but my team resists using Docker "in production". One of the reasons is that Docker is a virtual environment and it doesn't make sense to run it on EC2 which is itself a virtualized environment.

I searched for arguments against using Docker in production but I'm still unclear on the cons and pros of this approach. I mean Amazon ECS support Docker, but that seems more like buzzword compatibility. Can anyone share some insight for why (or why not) one may use Docker (or other container technologies like RKT) as opposed to RPM+AMI?

Update December 2016: digging deeper into it, I realized my team's main concern was limited capabilities of docker-compose as opposed to more advanced orchestration tools like Kubernetes. Kubernetes can use Docker (among other container technologies) which implies there is no problem running Docker in production if the required orchestration technology is in place.

2
  • I do think that it makes sense running Docker in VMs in terms of a public Cloud. However AWS has new services, see this: aws.amazon.com/ecs Commented Nov 28, 2016 at 17:05
  • I'm aware of ECS which is interesting because it shows AWS is committed to support Docker, but I still don't know why big enterprises don't flock to Docker. It seems to have addressed many deployment issues nicely.
    – AlexStack
    Commented Nov 28, 2016 at 17:42

1 Answer 1

4

Docker provides an isolation between the host machine (your AWS instance) and the running process that generates your RPM. I know no reason why you couldn't use Docker as one more layer of security and automation, since it would be a lot easier in case you need to migrate to another server or even cloud provider.

Also, you can create multiples Docker images running different OS distros and versions to test the installation of your newly created RPM package, in a fully automated workflow.

Now regarding "using Docker in production", I can't list all the company and big projects using in production since an year ago. It is stable, has awesome documentation, a big and fast growing community and the company behind (Docker Inc) is one of the most innovative and under the spotlight of software development currently. Not to mention that Docker's technology stack is based on solid Linux components like the Kernel itself and libcontainer.

As a starting plan, I would suggest you to migrate one small part of your environment to Docker and use as a testing setup. This also gives you more ground to spot eventual problems you might have.

Awesome references I found: [1] https://clusterhq.com/assets/pdfs/state-of-container-usage-june-2015.pdf

2
  • 1
    AFAIK docker is not LXC-based anymore.
    – schaiba
    Commented Dec 15, 2016 at 12:28
  • @schaiba not by default. It was replaced by libcontainer about two years ago. But you can still change it depending on your environment. But you're right, I should update my answer. Commented Dec 15, 2016 at 12:40

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .