Managing Docker Containers: A Beginner’s Guide

Hi there! Today, we’ll be learning about managing Docker containers. If you’re new to Docker, don’t worry – I’ll explain everything in simple terms so you can follow along easily.

By the end of this tutorial, you’ll have a solid understanding of how to manage your Docker containers effectively. So let’s get started!

To learn more about Docker, please check Docker Tutorials page.

Monitoring and Logging Containers

Monitoring your containers is important to ensure they are running smoothly and efficiently. Luckily, Docker has built-in tools to help you keep an eye on your containers. Let’s start by learning about the docker stats command.

Docker Stats

docker stats allows you to monitor the resource usage of your running containers. Open a terminal and type the following command:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker stats
docker stats
docker stats

You’ll see an output displaying the CPU usage, memory usage, network usage, and more for each running container. This is helpful to spot if any container is consuming too many resources.

Docker Logs

Another essential aspect of managing containers is checking their logs. Docker logs help you understand what’s happening inside your containers. To view the logs of a specific container, use the following command:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker logs [container_name_or_id]
docker logs [container_name_or_id]
docker logs [container_name_or_id]

Replace [container_name_or_id] with the name or ID of the container you want to check. You’ll see the logs displayed in your terminal.

Managing Container Resources (CPU, Memory, etc.)

Sometimes, you may want to limit the resources a container can use. You can do this using the --cpus, --memory, and --memory-swap flags when starting a container. Let’s see an example:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker run -d --name example_container --cpus 1 --memory 512m --memory-swap 1g my_image
docker run -d --name example_container --cpus 1 --memory 512m --memory-swap 1g my_image
docker run -d --name example_container --cpus 1 --memory 512m --memory-swap 1g my_image

In this example, we’ve limited the container to use only 1 CPU, 512 MB of RAM, and 1 GB of swap memory.

Managing Container Lifecycles

Managing container lifecycles involves starting, stopping, and restarting containers as needed. Here are the basic commands you’ll need:

Starting and Stopping Containers

To start a stopped container, use the following command:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker start [container_name_or_id]
docker start [container_name_or_id]
docker start [container_name_or_id]

To stop a running container, use:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker stop [container_name_or_id]
docker stop [container_name_or_id]
docker stop [container_name_or_id]

Restarting Containers

If you need to restart a container, use the following command:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker restart [container_name_or_id]
docker restart [container_name_or_id]
docker restart [container_name_or_id]

Removing Containers

When you no longer need a container, you can remove it using the docker rm command. First, ensure the container is stopped, and then type:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker rm [container_name_or_id]
docker rm [container_name_or_id]
docker rm [container_name_or_id]

Backing Up and Restoring Containers

Backing up and restoring containers is crucial to ensure your data and configurations are safe. You can do this using Docker volumes and the docker cp command.

Docker Volumes

Docker volumes are the preferred way to persist data in containers. To create a volume, use the following command:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker volume create [volume_name]
docker volume create [volume_name]
docker volume create [volume_name]

To use the volume with a container, use the -v flag when starting the container:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker run -d --name example_container -v [volume_name]:/path/in/container my_image
docker run -d --name example_container -v [volume_name]:/path/in/container my_image
docker run -d --name example_container -v [volume_name]:/path/in/container my_image

Docker CP

The docker cp command allows you to copy files between your host system and a container. To copy a file from your host system to a container, use the following command:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker cp /path/on/host [container_name_or_id]:/path/in/container
docker cp /path/on/host [container_name_or_id]:/path/in/container
docker cp /path/on/host [container_name_or_id]:/path/in/container

To copy a file from a container to your host system, use:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker cp [container_name_or_id]:/path/in/container /path/on/host
docker cp [container_name_or_id]:/path/in/container /path/on/host
docker cp [container_name_or_id]:/path/in/container /path/on/host

Backup and Restore Example

Let’s assume you have a container running a database, and you want to back up the data. First, create a backup directory on your host:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
mkdir /path/to/backup
mkdir /path/to/backup
mkdir /path/to/backup

Next, use docker cp to copy the data from the container to the backup directory:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker cp my_database_container:/var/lib/database /path/to/backup
docker cp my_database_container:/var/lib/database /path/to/backup
docker cp my_database_container:/var/lib/database /path/to/backup

To restore the data to a new container, create a new volume:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker volume create new_database_volume
docker volume create new_database_volume
docker volume create new_database_volume

Copy the backup data to the new volume:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker run --rm -v new_database_volume:/var/lib/database -v /path/to/backup:/backup my_database_image cp -a /backup/. /var/lib/database/
docker run --rm -v new_database_volume:/var/lib/database -v /path/to/backup:/backup my_database_image cp -a /backup/. /var/lib/database/
docker run --rm -v new_database_volume:/var/lib/database -v /path/to/backup:/backup my_database_image cp -a /backup/. /var/lib/database/

Finally, start a new container with the restored data:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker run -d --name new_database_container -v new_database_volume:/var/lib/database my_database_image
docker run -d --name new_database_container -v new_database_volume:/var/lib/database my_database_image
docker run -d --name new_database_container -v new_database_volume:/var/lib/database my_database_image

Conclusion

And that’s it! Now you have a solid understanding about managing Docker containers effectively. We’ve covered monitoring and logging, managing resources, container lifecycles, and backing up and restoring containers. Keep practicing, and soon you’ll be a Docker expert!