Top 40 Docker interview questions (with answers)

Top 40 Docker interview questions (with answers)

10 mins read
Oct 27, 2025
Share
Content
Docker interview questions and answers
1. What are Docker containers?
2. What is a DockerFile?
3. How do you create a Docker container from a Docker image?
4. Can you use JSON instead of YAML for Docker Compose?
5. What is Docker Swarm?
6. If you want to use a base image and make modifications to it, how do you do that?
7. How do you start, stop, and kill containers?
8. What platforms does Docker run on?
9. Explain the Docker components.
10. What’s the difference between virtualization and containerization?
Keep learning Docker for free.
11. What is the functionality of a hypervisor?
12. How do you build a Dockerfile?
13. What command do you use to push a new image to the Docker Registry?
14. What is Docker Engine?
15. How do you access a running container?
16. How do you list all the running containers?
17. Describe the lifecycle of a Docker container.
18. What are Docker object labels?
19. How do you ensure that container 1 runs before container 2 while using Docker Compose?
20. What does the docker create command do?
20 more interview questions to explore
Bonus Docker interview questions to practice
What are multi-stage builds and why use them?
What’s the difference between COPY and ADD in a Dockerfile?
What is the role of .dockerignore and the build context?
How do HEALTHCHECK instructions work?
Volumes vs bind mounts—when do you use each?
How do you constrain CPU and memory for a container?
What restart policies are available and when to use them?
How do Docker logging drivers work?
How do you manage secrets in Docker?
What are key container hardening best practices?
Next steps
Continue reading about interview prep

Docker is a popular open-source software platform that simplifies the process of creating, managing, running, and distributing applications. It uses containers to package applications along with their dependencies. Docker dominates the market. Most of the top cloud and IT companies have adopted Docker to streamline their application development workflows. The demand for applicants with Docker experience is high.

Cracking your Docker interview is the key to landing one of these highly coveted roles. We’ve gathered the top 40 Docker interview questions to help you prepare for your Docker interview. This Docker tutorial includes both questions and answers. Let’s get started!

We’ll cover:


Get hands-on with Docker for free

Master Docker fundamentals with Educative’s 1-week free trial.

DevOps for Developers

Docker interview questions and answers#

1. What are Docker containers?#

Docker containers create an abstraction at the application layer and package applications together with all of their dependencies. This allows us to deploy applications quickly and reliably. Containers don’t require us to install a different operating system. Instead, they use the underlying system’s CPU and memory to perform tasks. This means that any containerized application can run on any platform regardless of the underlying operating system. We can also think of containers as runtime instances of Docker images.

2. What is a DockerFile?#

A Dockerfile is a text file that contains all of the commands that we need to run to build a Docker image. Docker uses the instructions in the Dockerfile to automatically build images. We can use docker build to create automated builds that execute multiple command-line instructions in sequential order.

3. How do you create a Docker container from a Docker image?#

To create a container from an image, we pull out the image that we want from the Docker repository and create a container. We can use the following command:

$ docker run -it -d <image_name>

4. Can you use JSON instead of YAML for Docker Compose?#

Yes, we can use a JSON file instead of a YAML file for the Docker Compose file. To use JSON, we need to specify the filename like this:

$ docker-compose -f docker-compose.json up

5. What is Docker Swarm?#

Docker Swarm is a container orchestration tool that allows us to manage multiple containers across different host machines. With Swarm, we can turn multiple Docker hosts into a single host for easy monitoring and management.

6. If you want to use a base image and make modifications to it, how do you do that?#

We can pull an image from Docker Hub onto our local system using the following Docker command:

$ docker pull <image_name>

7. How do you start, stop, and kill containers?#

To start a Docker container, use the following command:

$ docker start <container_id>

To stop a Docker container, use the following command:

$ docker stop <container_id>

To kill a Docker container, use the following command:

$ docker kill <container_id>

8. What platforms does Docker run on?#

Docker runs on the following Linux distributions:

  • CentOS 6+
  • Gentoo
  • ArchLinux
  • CRUX 3.0+
  • openSUSE 12.3+
  • RHEL 6.5+
  • Fedora 19/20+
  • Ubuntu 12.04, 13.04

Docker can also be used in production with these cloud services:

  • Microsoft Azure
  • Google Compute Engine
  • Amazon AWS EC2
  • Amazon AWS ECS
  • Rackspace

Tip: We always recommend engaging in some company research prior to your interview. To prepare for this particular question, find out how to company uses Docker and include the platform they use in your answer.

9. Explain the Docker components.#

The three architectural components include Docker Client, Host, and Registry.

  • Docker Client: This component executes build and run operations to communicate with the Docker Host.

  • Docker Host: This component holds the Docker Daemon, Docker images, and Docker containers. The daemon sets up a connection to the Docker Registry.

  • Docker Registry: This component stores Docker images. It can be a public registry, such as Docker Hub or Docker Cloud, or a private registry.

10. What’s the difference between virtualization and containerization?#

Virtualization

Virtualization helps us run and host multiple operating systems on a single physical server. In virtualization, hypervisors give a virtual machine to the guest operating system. The VMs form an abstraction of the hardware layer so each VM on the host can act as a physical machine.

Containerization

Containerization provides us with an isolated environment for running our applications. We can deploy multiple applications using the same operating system on a single server or VM. Containers form an abstraction of the application layer, so each container represents a different application.


Keep learning Docker for free.#

Get started with Docker for free with our 1-week Educative Unlimited Trial. Educative’s text-based learning paths are easy to skim and feature live coding environments, making learning quick and efficient.

DevOps for Developers


11. What is the functionality of a hypervisor?#

A hypervisor, or virtual machine monitor, is software that helps us create and run virtual machines. It enables us to use a single host computer to support multiple guest virtual machines. It does this by dividing the system resources of the host and allocating them to the installed guest environments. Multiple operating systems can be installed on a single host operating system. There are two kinds of hypervisors:

  • Native: Native hypervisors, or bare-metal hypervisors, run directly on the underlying host system. It gives us direct access to the hardware of the host system and doesn’t require a base server operating system.

  • Hosted: Hosted hypervisors use the underlying host operating system.

12. How do you build a Dockerfile?#

In order to create an image with our outlined specifications, we need to build a Dockerfile. To build a Dockerfile, we can use the docker build command:

$ docker build <path to dockerfile>

13. What command do you use to push a new image to the Docker Registry?#

To push a new image to the Docker Registry, we can use the docker push command:

$ docker push myorg/img

14. What is Docker Engine?#

Docker Engine is an open-source containerization technology that we can use to build and containerize our applications. Docker Engine is supported by the following components:

  • Docker Engine REST API
  • Docker Command-Line Interface (CLI)
  • Docker Daemon

15. How do you access a running container?#

To access a running container, we can use the following command:

$ docker exec -it <container_id> bash

16. How do you list all the running containers?#

To list all of the running containers, we can use the following command:

$ docker ps

17. Describe the lifecycle of a Docker container.#

Docker containers go through the following stages:

  • Create a container
  • Run the container
  • Pause the container (optional)
  • Un-pause the container (optional)
  • Start the container
  • Stop the container
  • Restart the container
  • Kill the container
  • Destroy the container

18. What are Docker object labels?#

Docker object labels are key-value pairs that are stored as strings. They enable us to add metadata to Docker objects such as containers, networks, local daemons, images, Swarm nodes, and services.

19. How do you ensure that container 1 runs before container 2 while using Docker Compose?#

Docker Compose doesn’t wait for containers to be ready before moving forward with the next container. In order to control our order of execution, we can use the “depends on” condition, depends_on. Here’s an example of it being used in a docker-compose.yml file:

version: "2.4"
services:
backend:
build: .
depends_on:
- db
db:
image: postgres

The docker-compose up command will start and run the services in the dependency order that we specify.

20. What does the docker create command do?#

The docker create command creates a writable container layer over a specified image and prepares that image for running the specified command.


20 more interview questions to explore#

    1. Explain Docker architecture.
    1. What’s the difference between CMD and ENTRYPOINT?
    1. What is the purpose of the volume parameter in a Docker run command?
    1. Is it a good practice to run stateful applications on Docker?
    1. What are Docker Namespaces?
    1. Explain the implementation method of continuous integration and continuous deployment in Docker.
    1. What is the process for stopping and restarting a Docker container?
    1. How do you give your Docker image an image name?
    1. What does the docker service command do?
    1. Can you lose data when the container exits?
    1. How do Jenkins and Docker work together?
    1. How far do Docker containers scale?
    1. Describe the differences between daemon logging and container logging.
    1. Explain the purposes of up, run, and start commands of Docker compose.
    1. Where are Docker volumes stored?
    1. Explain the difference between Docker image and layer.
    1. Can a paused container be removed from Docker?
    1. How do you use the docker save and docker load commands?
    1. What is the default Docker network driver? How can you change it when running a Docker image?
    1. What does the docker system prune command do?

Bonus Docker interview questions to practice#

What are multi-stage builds and why use them?#

Answer: Multi-stage builds let you use multiple FROM statements in one Dockerfile so you can build artifacts in a “builder” stage and copy only the final outputs into a tiny runtime image. This reduces image size, surface area, and build time.

Example:

FROM golang:1.22 AS build
WORKDIR /src
COPY . .
RUN go build -o app
FROM gcr.io/distroless/base
COPY --from=build /src/app /app
ENTRYPOINT ["/app"]

What’s the difference between COPY and ADD in a Dockerfile?#

Answer: COPY simply copies local files into the image. ADD also supports remote URLs and automatic extraction of local tar archives. Best practice: prefer COPY for clarity and reproducibility; use ADD only when you explicitly need its extra behaviors.

What is the role of .dockerignore and the build context?#

Answer: The build context is the directory sent to the Docker daemon during docker build. A large context makes builds slow and images bloated. Use .dockerignore (similar to .gitignore) to exclude files like node_modules, .git, and test artifacts so they aren’t sent to the daemon or accidentally copied into images.

How do HEALTHCHECK instructions work?#

Answer: HEALTHCHECK lets Docker periodically test container health. If the command exits non-zero, status becomes unhealthy, which can be used by orchestrators for restarts or routing.

Example:

HEALTHCHECK --interval=30s --timeout=3s \
CMD curl -f http://localhost:8080/health || exit 1

Check with docker inspect to see health state.

Volumes vs bind mounts—when do you use each?#

Answer:

  • Volumes: Managed by Docker; stored in Docker’s area. Portable, good for persistent data across container lifecycles, easy to back up and share between containers.

  • Bind mounts: Map a host path into the container. Useful for local dev (live code reload), but tightly couples container to host filesystem layout and permissions.

How do you constrain CPU and memory for a container?#

Answer: Use runtime flags to prevent noisy-neighbor problems and improve reliability:

  • CPU: --cpus=2 or --cpuset-cpus="0,1"

  • Memory: --memory=512m --memory-swap=1g

  • PIDs: --pids-limit=200

These limits are important in multi-tenant hosts and CI runners.

What restart policies are available and when to use them?#

Answer: Common policies:

  • no (default): never restart.

  • on-failure[:max-retries]: restart only if exit code ≠ 0.

  • always: always restart, even after daemon restarts.

  • unless-stopped: like always but won’t restart if the container was manually stopped. 

Use on-failure for batch jobs; unless-stopped/always for long-running services.

How do Docker logging drivers work?#

Answer: Docker captures container stdout/stderr and routes it via a logging driver (e.g., json-file default, journald, syslog, gelf, fluentd). Configure per-container with --log-driver and options like rotation (--log-opt max-size=10m --log-opt max-file=3). Centralized drivers help ship logs off-host for analysis and retention.

How do you manage secrets in Docker?#

Answer: Avoid baking secrets into images or environment variables. Options include:

  • Docker Swarm secrets: docker secret create and consume via /run/secrets/....

  • External secret stores: mount at runtime or fetch on start (e.g., cloud KMS, Vault).

  • Build-time: never pass secrets in COPY; use build args only for non-sensitive values. For local dev, prefer bind mounts with strict permissions.

What are key container hardening best practices?#

Answer:

  • Run as a non-root user: in Dockerfile USER appuser (create it first).

  • Minimize image size: use distroless/alpine or multi-stage builds.

  • Drop capabilities: --cap-drop=ALL --cap-add=NET_BIND_SERVICE (only what you need).

  • Read-only filesystem: --read-only and mount writable dirs as tmpfs if required.

  • Pin versions and digests: avoid latest; use immutable tags or content digests.

  • Scan images: integrate image scanning in CI to catch vulnerabilities early.


Next steps#

Congrats! You made it to the end. Preparing for your Docker interview will take time, so be patient with the process. Be prepared to spend a lot of time studying and preparing. There’s still more to learn about Docker. Some recommended topics to cover next include:

  • Docker with common development profiles
  • Docker security
  • Private registries

To get started learning these concepts and a lot more, check out Educative’s learning path DevOps for Developers. In this curated learning path, you’ll get hands-on practice with Docker and Kubernetes. By the end, you’ll have cutting-edge stills and hands-on experience so you can excel in your DevOps role.

Happy learning!


Continue reading about interview prep#


Written By:
Erin Schaffer