How to Use Docker: A Comprehensive Guide by OpsNexa

Docker has revolutionized how applications are built, shipped, and run. With its containerization technology, it allows developers to package applications and all of their dependencies into a standardized unit called a container. These containers can then be easily moved across different environments, from your local machine to production systems, ensuring that the application behaves the same everywhere.

In this guide, we’ll cover the basics of how to use Docker, focusing on container creation, management, and best practices. Whether you’re a developer, IT professional, or DevOps engineer, this guide will help you get started with Docker.


What is Docker?

Before diving into usage, it’s essential to understand what Docker is. Docker is a platform that automates the deployment of applications inside lightweight, portable containers. Containers are isolated from each other and from the host system, which makes them highly reliable and consistent across different environments.

With Docker, you can ensure that an application runs in the same way regardless of where it’s deployed. The primary components of Docker include:

  • Docker Engine: The runtime environment where containers are executed.

  • Docker Hub: A cloud-based repository for storing and sharing Docker images.

  • Docker Images: Pre-configured files containing everything needed to run a program (e.g., code, runtime, libraries).

  • Docker Containers: A running instance of a Docker image that performs a specific task.

Now let’s move on to how you can use Docker to start building and managing containers for your applications.


How to Use Docker?

Step 1: Install Docker

If you haven’t already installed Docker, the first step is to download and install it on your system. Here’s how to install Docker on different operating systems:

  • Linux: Follow the instructions for your specific Linux distribution (e.g., Ubuntu, CentOS).

  • Windows: Download Docker Desktop from the official Docker website and follow the installation instructions.

  • macOS: Download Docker Desktop for macOS and follow the installation guide.

Once installed, ensure Docker is running by opening a terminal or command prompt and typing the following:

bash
docker --version

If Docker is installed correctly, this will display the version number.


Step 2: Understanding Docker Images and Containers

Docker Images

A Docker image is a blueprint for creating containers. It contains all the necessary files to run an application. You can either create your own image or use existing images from Docker Hub.

To search for an image on Docker Hub, use the following command:

bash
docker search <image-name>

For example, to search for the official Ubuntu image, run:

bash
docker search ubuntu

Docker Containers

A Docker container is a running instance of a Docker image. It is isolated from the host machine and other containers, ensuring that each container can run its processes independently.

To run a container from an image, use:

bash
docker run <image-name>

For instance, to run an Ubuntu container, you can type:

bash
docker run -it ubuntu

The -it flags allow you to interact with the container through the terminal.

Step 3: Basic Docker Commands

Here are some essential Docker commands to help you get started:

1. docker run

The docker run command is used to create and start a container from an image. For example:

bash
docker run -it ubuntu bash

This command runs an Ubuntu container and opens a Bash terminal within the container.

2. docker ps

To see the list of currently running containers, use the docker ps command:

bash
docker ps

This will display information about all running containers.

3. docker ps -a

To see all containers, including stopped ones, use:

bash
docker ps -a

4. docker stop

To stop a running container, use the docker stop command:

bash
docker stop <container-id>

Replace <container-id> with the actual container ID or name. You can find this ID by running docker ps.

5. docker start

To start a stopped container:

bash
docker start <container-id>

6. docker rm

To remove a stopped container, use:

bash
docker rm <container-id>

7. docker images

To list all available Docker images on your system, use:

bash
docker images

This will display the image name, tag, and size.

8. docker rmi

To remove an image from your system:

bash
docker rmi <image-id>

Step 4: Creating Dockerfiles and Custom Images

While you can use pre-built images from Docker Hub, you often need to create custom Docker images for your applications. This is where Dockerfiles come in.

Dockerfile Example

A Dockerfile is a text file that contains all the instructions to build a Docker image. Here’s an example of a basic Dockerfile for a Node.js application:

Dockerfile
# Step 1: Use an official Node.js runtime as a parent image
FROM node:14

# Step 2: Set the working directory in the container
WORKDIR /usr/src/app

# Step 3: Copy package.json and install dependencies
COPY package*.json ./
RUN npm install

# Step 4: Copy the rest of the application code
COPY . .

# Step 5: Expose port 3000
EXPOSE 3000

# Step 6: Start the application
CMD ["node", "app.js"]

To build an image from this Dockerfile, run:

bash
docker build -t my-node-app .

This command will build a Docker image named my-node-app using the current directory (.) as the context.


Step 5: Running and Managing Docker Containers

Once you have built your custom image, you can run a container based on it:

bash
docker run -d -p 3000:3000 my-node-app

This command runs your container in detached mode (-d) and maps port 3000 of the container to port 3000 of your host machine (-p 3000:3000).

Accessing a Running Container

To access the running container’s shell, use:

bash
docker exec -it <container-id> bash

This will open an interactive terminal session inside the container.


Step 6: Docker Compose (Optional)

For applications that require multiple services (e.g., a web server and database), you can use Docker Compose to define and manage multi-container applications with a simple YAML configuration file.

Example docker-compose.yml

yaml
version: '3'
services:
web:
image: nginx
ports:
- "8080:80"
db:
image: postgres
environment:
POSTGRES_PASSWORD: example

You can start the application with:

bash
docker-compose up

This will launch both the web and db services defined in the docker-compose.yml file.


Step 7: Best Practices for Using Docker

  • Use Official Images: When possible, use official Docker images from Docker Hub for consistency and security.

  • Use Multi-Stage Builds: For optimized Docker images, use multi-stage builds to reduce image size.

  • Manage Volumes for Persistent Data: Docker containers are ephemeral, so use volumes to store persistent data.

  • Tag Your Images: Tag your images with versions to maintain control over your application versions.


Conclusion

Docker provides a powerful toolset for developers, allowing for easier deployment, testing, and management of applications. By following this guide, you’ve learned the fundamentals of Docker, including running containers, building images, and working with Docker Compose. Docker makes it easier to create consistent and portable development environments, enabling faster deployment and scalability.

For expert Docker setup, optimization, and support, reach out to OpsNexa, where we specialize in containerization and DevOps solutions.