Chapter 3 - Docker Containers

Yusuf IsahYusuf Isah
4 min read

Introduction

Docker containers are the building blocks of modern containerized applications. In this chapter, we'll delve into the world of Docker containers, exploring their fundamental concepts, basic operations, and essential management tasks. You'll learn how containers are instances of images, how to run, list, inspect, and access containers, and how to perform basic container lifecycle operations such as stopping, starting, restarting, and removing. By the end of this chapter, you'll have a solid understanding of Docker containers and be equipped with the skills to effectively work with them in your containerized applications.

Docker Containers

A Docker container is a lightweight and standalone executable package that includes everything an application needs to run, such as code, libraries, and dependencies. Containers are isolated from each other and the host system, ensuring consistent behavior and performance.

Understanding Containers as Instances of Images

Containers are created from Docker images, which are templates that define the container's configuration and contents. When you run a container, Docker creates an instance of the image, allowing multiple containers to share the same image. This approach ensures efficient resource utilization and enables easy deployment.

Basic Container Operations

Running a Container

  • To run a Docker container, you can use the docker run command. This command creates a new container from a specified image and starts it. For example:

      docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
    

Let's breakdown the command above:

  • docker run: The command to create and start a new container.

  • [OPTIONS]: Optional flags that modify the container's behavior (e.g., -it for interactive mode, -p for port mapping, or -d for detached/daemon mode).

  • IMAGE: The Docker image to use as a template for the container.

  • [COMMAND]: The command to run inside the container (if not specified, the image's default command is used).

  • [ARG...]: Arguments passed to the command (if any).

For example:

  docker run -d -p 80:80 --name webserver nginx
  ```

The command above runs an Nginx web server named `webserver` in detached mode, mapping port 80 of the host to port 80 of the container.

### <p style="color: skyblue;">Listing Running Containers</p>

To list all running containers, use the `docker ps` command.

```sh
docker ps

The command above will show a list of all currently running containers with details such as container ID, image name, and status.

Inspecting Containers

Use the docker inspect command to get detailed information about a container.

docker inspect [container_id]

Accessing a Running Container

Use the docker exec command to run commands inside a running container.

docker exec -it [container_id] [command]

For example:

docker exec -it 929374hfh573hdjf /bin/bash

Let's breakdown what the command above is doing:

  • docker exec is the command to execute a command inside a running container.

  • -it allocates a pseudo-TTY and keeps the container running after the command finishes.

  • 929374hfh573hdjf is the container ID.

  • /bin/bash is the command to run inside the container (in this case, starts a new Bash shell).

Stopping, Starting, Restarting, and Removing Containers

  • Stopping a Container: To stop a running container, use the docker stop command followed by the container ID or name.

      docker stop [container_id]
    
  • Starting a Container: To start a stopped container, use the docker start command.

      docker start [container_id]
    
  • Restarting a Container: To restart a running container, use the docker restart command.

      docker restart [container_id]
    
  • Removing Containers: To remove a stopped container, use the docker rm command, followed by the container ID.

      docker rm [container_id]
    

If you want to remove a running container, you can use the -f option to forcefully remove it.

docker rm -f [container_id]

Conclusion

In this chapter, we defined Docker containers. We also learned how to run containers, list and inspect them, access their shells, and perform basic operations like stopping, starting, and removing. By mastering these essential skills, you're on your way to efficiently deploy and manage applications in a containerized environment.

Feel free to leave comments and share this article. Follow my blog for more insights on Docker and DevOps!

0
Subscribe to my newsletter

Read articles from Yusuf Isah directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Yusuf Isah
Yusuf Isah

Hello. I am a DevOps enthusiast from Nigeria. I am also passionate about Technical Writing. As a passionate DevOps enthusiast, I'm dedicated to bridging the gap between development and operations teams. With a strong foundation in Linux, Git, Docker, and Kubernetes, I excel in creating efficient, scalable, and reliable software delivery pipelines. With a keen eye for detail and a passion for continuous learning, I stay up-to-date with industry trends and best practices. My goal is to collaborate with like-minded professionals, share knowledge, and drive innovation in the DevOps space. I look forward to sharing with you, all I've learned so far in my DevOps journey.