Since 2013 containerization technology has grown to become a major trend in the IT industry. As of 2020, containerization accounted for about 19% of hybrid cloud production and the numbers are rising. Developers have come to appreciate containerization more than virtualization as containerization enables the deployment of multiple applications on the same operating system on a single server. Containers, the standard unit of software, encapsulate code together with all the dependencies of the code to run them across various platforms separately from the host operating systems. Containerization alongside other innovative technologies like cloud computing and DevOps have transformed software development making the process not only agile but fast, secure, less complex, and easily scalable.
Docker is an open-source platform on which developers build and port applications inside containers faster and more reliably across computing environments. It has been adopted by the likes of Paypal, Uber, Netflix, and Spotify for application development and has today become a household name among developers. Its core features include high availability based on the principle of replication, high portability, easy scalability, and is a great tool for running test applications.
With containers becoming core components of modern development infrastructures, attention has shifted to containerization technologies like Docker. Docker skills have increased in demand today more than ever. In 2020, job posts on Indeed that had Docker skills as a requirement increased by almost 50%. Docker interview questions typically test a professional’s knowledge and competence in areas like core components of docker architecture, docker registry, best practices, Docker’s underlying technology, and docker container execution.
Docker interview questions
Are you a starter, intermediate, or experienced Docker professional? We break down for you the common Docker-based interview questions you should expect to be asked in your upcoming interview.
Docker Beginner interview questions
These questions are curated for professionals who are pursuing an internship or entry-level Docker-based roles, who have just completed their training and intend to set foot into the job market to build their experience and work their way up the career ladder. Entry-level roles include junior DevOps engineer, entry-level sysadmin, entry-level software engineer, and more.
Why is Docker preferred?
- Isolation and consistency. Developers use Docker to create isolated environments for running each application. This makes it possible for the application to run anywhere consistently regardless of the environment to enhance productivity.
- Portability and performance. Portability refers to the ability of Docker containers to run anywhere. This is by far the biggest advantage that Docker offers. It makes deployment, testing, rollback, and debugging of features, functionalities, and applications fast and easy.
- Automation. Docker images retain their configurations and dependencies making it possible to reuse them hence speeding up the development process for applications.
What does the Docker architecture comprise?
This is a common question that tests one’s understanding of Docker fundamentals. Ideally, Docker is composed of four core components that a professional must understand to be in a position to use Docker to develop applications. Docker is based on a client-server architecture that comprises the following components:
- Docker daemon. Also known as ‘Dockerd’ the Docker daemon runs on the host OS and accepts Docker API requests and manages various Docker objects including containers, images, storage, and network while also managing Docker services.
- Docker client. The Docker client provides a CLI (command-line interface) that enables the user to execute Docker commands through the Docker API. A Docker client can communicate with more than one Daemons.
- Docker Host. The Docker host is the physical computer or virtual machine on which Docker daemons run. The role of the Docker daemons is to create and run Docker containers and images.
- Docker registry. The Docker registry is used for storing and managing Docker images. There are two types, the public registry (Docker Hub) which stores and distributes named docker images. The other is the private registry designed for private use by enterprises from which they create and share custom base images within the enterprise.
A dockerfile is a text document containing specific commands that act as a guideline for building a Docker image. Users can automate the Docker image build process to execute multiple images builds using the Docker build command.
What is a Docker image?
A docker image is a file template containing code and all the dependencies needed to run it inside a container. The Docker image is in essence commands that are used in building a Docker container.
What is the use of the Docker swarm?
Docker swarm is a container clustering and scheduling tool that lets developers manage multiple containers running across multiple hosts. Docker swarm delivers high availability for applications and is thus an appropriate orchestration tool for hosting scalable applications with a standard Docker installation without the need for additional dependencies.
Docker intermediate interview questions
Intermediate Docker roles include mid-level software developer, mid-level DevOps engineer, mid-level software engineer. While these professionals have achieved some level of experience with Docker technology, they have not yet attained mastery.
List some of the basic actions that can be executed on Docker containers
- Creating Docker container with the following command
docker create –name <container-name> <image-name>
- Running Docker container using the following command
docker run -it -d –name <container-name> <image-name> bash
- Starting a container that is in a stopped state using the following command
docker start <container-id/name>
- KIll container using the following command
docker kill <container-id/name>
- Destroy Docker container command used to discard it completely
docker rm <container-id/name>
Outline the differences between ADD and COPYcommands in a Dockerfile
When creating Dockerfiles developers usually transfer files needed to build and run an application from the host into a Docker image. There are two instructions available to developers to perform this task, COPY and ADD.
- COPY command [COPY <src> <dest>] copies new files and directories from <src> and adds them to the container’s filesystem at path <dest>. COPY command does not support URLs or archive files.
- ADD command [ADD <src> <dest>] also copies files and directories into the Docker image. However, it also pulls files from URLs and extracts archive files (tar, bzip2, gzip etc) as the <source> into the destination.
Is it possible to run several processes inside a single Docker container?
Given the fact that Docker is a process-level kind of virtualization, it is possible to run multiple processes inside a Docker container. However, this practice is not recommended. High performance and efficiency can be achieved when each container addresses one isolated issue. On the other hand, if need be, it is possible to run several services in a single container efficiently using the supervisor function.
How does Docker support continuous integration?
Continuous integration is a DevOps software development concept that automates the integration of code changes into a shared repository such that as soon as code changes are made they are automatically built into the source code, run, and tested.
Docker is compatible with integration tools like Jenkins and source control management tools like GitHub making it possible to run code efficiently in any environment thanks to its isolation. Also, it streamlines the application development process by making deployment, testing, and debugging processes fast and efficient.
Which task is the .dockerignore file used to execute?
The .dockerignore command is used to list the files and directories which a user wishes to ignore when building an image. This makes the Docker image lightweight which allows for a faster build process.
Docker advanced interview questions
Docker advanced interview questions are intended for those seeking more advanced Docker-related positions like Docker specialist and senior DevOps engineer. At this level, a professional should, from experience, be able to manage multiple nodes in Docker or run Docker swarm. They should have in-depth knowledge about microservices architecture.
Briefly outline the steps in the lifecycle of a Docker container
A Docker container goes through the following stages from its creation:
- Container creation
- Running the container
- Pausing the container
- Unpausing the container
- Starting the container
- Stopping the container
- Restarting the container
- Killing the container
- Deleting the container
Explain Docker volume mounting
When Docker containers run on the host system, changes inside them are lost once the container stops. One way of persisting these changes is by mounting Docker volumes on the containers. Docker volumes are stored on the host machine at /var/lib/docker/volumes/ separately from the container and are managed by Docker CLI commands. It is also important to note that volumes can be shared between multiple containers.
Which is the default network driver for Docker?
When an image is created and a network driver is not specified, the default network driver provided by Docker is known as a bridge.
Other network drivers provided by Docker are overlay, host, and macvlan.
Which networks driver should be used when the Docker swarm is created.
When the Docker swarm is created, the overlay network specifically ingress and the bridge network are created. The user can also specify the network driver to be used by creating it using the docker network create command.
The overlay network driver creates a distributed network among multiple host daemons. Thus the main role of overlay ingress is to perform load balancing among daemons participating in the swarm.
The bridge network is Docker’s default network that manages communication between containers running on the same Docker daemon host. However, the docker_gwbridge is the one responsible for connecting Docker daemons in a swarm. It connects the ingress and other overlay networks to the docker host network.
By now, you should have an idea of the commonly asked Docker interview questions at both the fresher and advanced levels. This list is by no means exhaustive. Docker is a broad technology. Organize your preparation by listing the useful topics then research interview questions and answers under these topics. Additionally, if you have never considered a training course, you may well benefit from one as it helps you focus your energies in the right places.