
What is the difference between Docker and configuration management tools?
Docker encourages you to wrap up most of your system as a reproducible and immutable image while configuration management tools encourage you to express your desired system state as a set of declarations. Both of these approaches help you avoid creating unnecessary complexity and both have weak points.
How do I control how much memory a docker container can use?
Docker provides ways to control how much memory, or CPU a container can use, setting runtime configuration flags of the docker run command. This section provides details on when you should set such limits and the possible implications of setting them. Many of these features require your kernel to support Linux capabilities.
What is the use of environment variables in Docker?
Docker encourages us to push as much of our configuration out of the image as possible. The natural place to move this configuration is environment variables; and Docker provides explicit support for this approach. But something has to set all those environment variables and Docker remains impartial about what.
What is a good alternative to configuration management tools?
Docker is a viable alternative to incumbent configuration management tools with its own advantages and disadvantages. Docker, like configuration management tools more generally, encourages certain good practices for integration and deployment of complex computing systems.

What is Docker actually used for?
Docker is an open platform for developing, shipping, and running applications. Docker enables you to separate your applications from your infrastructure so you can deliver software quickly. With Docker, you can manage your infrastructure in the same ways you manage your applications.
Is Docker A IaC tool?
Docker is not an IaC tool. It is a popular containerization tool that enables developers to create applications with all libraries, dependencies as a package and deploy them in any environment.
Is Docker a container management tool?
Docker is an open-source software platform for creating, deploying, and managing containers of virtualized applications on an operating system.
What is configuration management system?
A Configuration management system allows the enterprise to define settings in a consistent manner, then to build and maintain them according to the established baselines. A configuration management plan should include a number of tools that: Enable classification and management of systems in groups.
Which is the best configuration management tools?
The Best Configuration Management Tools ListRudder.Micro Focus Configuration Management System.Juju.Octopus.SysAid.SaltStack.Ansible.Comindware.More items...•
What is IaC example?
Examples of infrastructure-as-code tools include AWS CloudFormation, Red Hat Ansible, Chef, Puppet, SaltStack and HashiCorp Terraform. Some tools rely on a domain-specific language (DSL), while others use a standard template format, such as YAML and JSON.
What is difference between Docker and Kubernetes?
In a nutshell, Docker is a suite of software development tools for creating, sharing and running individual containers; Kubernetes is a system for operating containerized applications at scale. Think of containers as standardized packaging for microservices with all the needed application code and dependencies inside.
What is Docker in simple words?
In simple terms, Docker is a software platform that simplifies the process of building, running, managing and distributing applications. It does this by virtualizing the operating system of the computer on which it is installed and running. The first edition of Docker was released in 2013.
Is Kubernetes a container management tool?
What are container tools? The most widely used container orchestration platform is Kubernetes, an extensible, open-source solution for managing containerized applications. Kubernetes provides a number of management tools, including: Service discovery and load balancing.
What are the four elements of configuration management?
Identification, control, audit, and status accounting are the four basic requirements for a software configuration management system.
Which of following is configuration management tool?
Ansible is the best configuration management, deployment, orchestration open-source tool and also automation engine. It is a push-based configuration tool. It helps to automate the entire IT infrastructure by providing large productivity gains.
What are configuration management activities?
Configuration Management activities support:Traceability of designs to requirements.Proper identification and documentation of system elements, interfaces, and interdependencies.Timely and thorough vetting and disposition of change requests.Control and documentation of approved changes to baselines.More items...
What is an IaC tool?
IaC allows DevOps teams to use different tools and approaches to automatically control and customize the required infrastructure instead of manually configuring the servers and operating systems.
Which of the following is an IaC tool?
Terraform Terraform is one of the most popular IaC tools in the market.
Is Kubernetes an IaC?
Kubernetes demands an automated approach and an automated approach means IaC.
Is git an IaC tool?
The IaC tool to be discussed is called Terraform. The VCS tool to manage the IaC code base is called Git.
Configuration Management in the Docker World
Anyone managing more than a few servers can confirm that doing such a task manually is a waste of time and risky. Configuration management (CM) exists for a long time and there is no single reason I can think of why one would not use one of the tools. The question is not whether to adopt one of them but which one to choose.
CFEngine
CFEngine can be considered father of configuration management. It was created in 1993 and revolutionized the way we approach server setups and configurations. It started as an open source project and become commercialized in 2008 when the first enterprise version was released.
Puppet
Later on Puppet came into being. It also started as an open source project followed by the enterprise version. It was considered more “operations friendly” thanks to its model driven approach and small learning curve when compared to CFEngine. Finally there was a configuration management tool that operations department could leverage.
Chef
Then came Chef promising to solve some of the nuances of Puppet. And it did, for a while. Later, as popularity of both Puppet and Chef continued increasing, they entered the “zero sum game”. As soon as one of them came up with something new or some improvement, the other one adopted it.
Ansible
Ansible tries to solve the same problems as other configuration management tools but in a very different way. One important difference is that it performs all its operations over SSH. CFEngine and Puppet require clients to be installed on all servers they are supposed to manage.
Personal choice
If someone asked me few years ago which tool should we use I would have a hard time answering. Today, if one has the option to switch to containers (be it Docker or some other type) and immutable deployments, the choice is clear (at least among tools I mentioned).
The DevOps 2.0 Toolkit
If you liked this article, you might be interested in The DevOps 2.0 Toolkit: Automating the Continuous Deployment Pipeline with Containerized Microservices book.
What are runtime options in Docker?
Runtime options with Memory, CPUs, and GPUs. By default, a container has no resource constraints and can use as much of a given resource as the host’s kernel scheduler allows. Docker provides ways to control how much memory, or CPU a container can use, setting runtime configuration flags of the docker run command.
What happens when a Linux host is not enough memory?
On Linux hosts, if the kernel detects that there is not enough memory to perform important system functions, it throws an OOME, or Out Of Memory Exception, and starts killing processes to free up memory. Any process is subject to killing, including Docker and other important applications.
Why does my container run out of memory?
If a container is using an unexpected amount of either type of memory, it runs out of memory without affecting other containers or the host machine. Within this setting, if the kernel memory limit is lower than the user memory limit, running out of kernel memory causes the container to experience an OOM error.
What is the maximum amount of kernel memory a container can use?
The maximum amount of kernel memory the container can use. The minimum allowed value is 4m. Because kernel memory cannot be swapped out, a container which is starved of kernel memory may block host machine resources, which can have side effects on the host machine and on other containers. See --kernel-memory details.
What is CPU scheduling?
CPU scheduling and prioritization are advanced kernel-level features. Most users do not need to change these values from their defaults. Setting these values incorrectly can cause your host system to become unstable or unusable.
Does Docker use hard memory?
Docker can enforce hard memory limits, which allow the container to use no more than a given amount of user or system memory, or soft limits, which allow the container to use as much memory as it needs unless certain conditions are met, such as when the kernel detects low memory or contention on the host machine.
Can you limit a container's CPU cycles?
By default, each container’s access to the host machine’s CPU cycles is unlimited. You can set various constraints to limit a given container’s access to the host machine’s CPU cycles. Most users use and configure the default CFS scheduler. You can also configure the realtime scheduler.

Idempotency vs. Immutable Servers
- The configuration management tool domain specific languages (DSL’s) themselves are the most notable difference between Puppet and Chef. At times Puppet can feel painfully inflexible, while Chef makes sure to give you more than enough rope to hang yourself. Both try to push you towa…
The Image Is The Cache
- Docker effectively caches assets for us. As our Chef code gets more complicated we rely on more external artifacts. Although those artifacts are typically served by highly reliable services, as the number of them grows the odds that any one of them breaks on a given Chef run starts to be significant. We could eliminate that class of failure by hosting all of our artifacts locally, a strate…
Orchestration
- Immutability itself has its disadvantages. Sometimes you can make a really small change on a system to solve a really big problem. The OpenSSL library on my Ubuntu system takes about 500K of disk space and installs in seconds with apt. To deploy the same with Docker requires a costly build step. And when our industry has wanted to deploy OpenSSL in the last couple of years, we’…
Docker and Configuration Data
- Chef’s databags leave us with key management pain. Docker’s golden path is very convenient when you’re working with Free Software but when you need to access artifacts that are restricted (when you need to use a password, for example as part of the download of an artifact referenced in your Dockerfile) it is very hard to keep that secret out of the Docker metadata for your image. …
Other Docker Advantages
- Because we use Docker, we have a way to understand what produced our images. We can create a modified version of an image quickly. Once built, Docker images can be pushed out with less processing than configuration management code. So, despite their size, they don’t take longer to deploy. Docker pushes us in the direction of immutable servers, servers that you never fiddle wit…
Docker in Production
- Docker’s sweet spot is the development experience. People often express excitement when working with Docker for the first time; it is relatively easy to go from just starting out to having something that works. Things are a little less rosy for Docker in production. We’ve ended up building quite a bit of tooling around Docker to bridge the gap for our purposes. We have not yet …