Docker is a platform that gives users the ability to package an application and its associated dependencies into a container. This is done through a process called containerization, ensuring that the application works seamlessly in any environment, from development all the way to production.
These containers pull all the necessary dependencies that your app needs from the cloud, automatically configuring them.
Docker makes developers’ lives simpler by removing the hassle of configuring and setting up virtual environments. Rather, we are able to easily reproduce a production environment on our local machines.
In addition to this, the best part about Docker containers is the ability to share them with team members. This ensures that every person has the same consistent setup. No more messing around with “It works on my machine!”
Docker vs VMs
While at first Docker may look like a virtual machine itself, the functionality of the platform is different.
Firstly, a virtual machine requires the inclusion of an entire operating system so that it can run independently and act as though it is a standalone computer. Docker, on the other hand, only needs to share the hardware resources of the computer running the Docker daemon, such as its RAM, the CPU, storage space, etc.
A few other differences between Docker and a virtual machine include:
- Docker is much faster than a virtual machine because your application can start in a few seconds, since it doesn’t need to load an entire OS.
- Docker is multi-platform – – containers can be run on Windows, Linux and MacOS.
- The creation of a container can be done faster and destroy than creating a virtual machine.
- With Docker, you can keep your work-space clean, as each of your environments will be isolated. You can delete them at any time without impacting the rest.
- Docker makes it easier to deploy your project on your server in order to put it online
The benefits of Docker over VMs, as well as the easy portability of containers, are what makes the platform such an appealing option for developers.
Here are a few components and features of the Docker platform that you should know about…
Images are blueprints of your app that Docker uses to create containers. These images are created using a Docker pull command, which downloads the image.
Dockerfiles are simple text files that a Docker pull command uses to create an image. These Dockerfiles include a list of commands needed in the image creation process, enabling the automations of the entire process.
The syntax of Dockerfiles is incredibly similar to their equivalent Linux commands.
Containers are the standalone packages in which Docker runs your application and its associated dependencies. These containers are created using the app image with Docker to generate the container.
The Docker Daemon is the background service that builds, runs, and distributes Docker containers. It works with the host machine OS and the Docker client so that you can interact with containers.
– The background service running on the host that manages building, running and distributing Docker containers. The daemon is the process that runs in the operating system to which clients talk to.
The Docker Client is a command-line tool that users utilize to communicate with the Docker Daemon.
The command line tool that allows the user to interact with the daemon. More generally, there can be other forms of clients too – such as Kitematicwhich provide a GUI to the users.
The hub acts as a registry or directory of all available Docker images. Users are also able to host their own Docker Hub registry if needed.
Written by Bradley de Klerk, Developer at Haefele Software