What is Docker?
Docker is a tool designed to facilitate the creation, implementation, and execution of applications through containers. Containers allow a developer to package an application with all the parts it needs, such as libraries and other dependencies, and send everything as a single package. By doing this, thanks to the container, the developer can be sure that the application will run on any other Linux machine, regardless of any custom configuration that the machine may have and that may differ from the machine used to record and test the code.
What is Docker Architecture?
Dock Architecture includes a Docker client – used to activate Docker commands, a Docker Host – running Dock Daemon and a Docker Registry – storing Docker Images.
- To create a Docker image, we can use the CLI (client) to issue a compilation command for the Do Dock Daemon (which runs on Docker_Host). The Docker Daemon will create an image based on our entries and will save it in the Registry, which can be a Docker center or a local repository.
- If we do not want to create an image, we can simply extract an image from the Docker center that would have been built by a different user
- Finally, if we have to create a running instance of the Docker image, we can issue an execution command from CLI, which will create a Dock container.
How does Docker work?
Docker technology uses the Linux kernel and core resources, such as Cgroups and namespaces, to separate processes so that they can run independently. This independence is the intent of the containers. The ability to run several processes and applications separately from each other to take better advantage of their infrastructure, maintaining the security that would have with separate systems.
The container tools, including Docker, provide an implementation template based on the image. This facilitates the sharing of an application or set of services, with all its dependencies in various environments.
These tools created over Linux containers – which makes Docker easy to use an exclusive – offer users pre-requisite access to applications, ability to quickly implement and control versions and versioning.
Why use Docker?
Using Docker allows you to send code faster, standardize application operations, move code easily and save, improving the use of resources. With Docker, you get a single object that can run safely anywhere. The simple and direct Docker syntax offers full control. Broad adoption means there is a robust ecosystem of tools and applications ready for use with Docker.
Container image: A package with all the dependencies and information necessary to create a container. An image includes all dependencies (such as structures), in addition to the implementation and execution configuration that will be used during container runtime. Generally, an image is derived from several base images that are layers stacked on top of each other to form the container’s file system. An image is immutable after it has been created.
Dockerfile: A text file that contains instructions on how to create a Dock image. It’s like a batch script, the first line indicates the base image to start and then follows the instructions to install the necessary programs, copy files and so on until you get the desktop you need.
Build The action of building a container image based on the information and context provided by Dockerfile, as well as additional files in the folder where the image is built. You can create images with the Docker coupling window compilation command.
Container: An instance of a Docker image. A container represents the execution of a single application, process or service. It consists of the content of a Docker image, in an execution environment and in a standard set of instructions. When scaling a service, create multiple instances of a container of the same image. Or a batch job can create multiple containers of the same image, passing different parameters to each instance.
Volumes: Offer a recordable file system that the container can use. Because the images are read-only, but most programs must write to the file system, the volumes add a recordable layer to the top of the container image so that the programs have access to a recordable file system. The program does not know that it is accessing a file system in layers, it is just the file system as usual. The volumes live on the host system and are managed by Docker.