Docker Tutorial: A Guide for Beginners

Docker is a popular open-source platform that enables developers to build, ship, and run applications in containers. Containers are a lightweight and efficient way to package software and its dependencies into a portable unit that can run consistently across different computing environments.

With Docker, developers can create containers that include all the necessary components of an application, such as the operating system, libraries, and dependencies. These containers can then be easily deployed and managed, allowing developers to focus on writing code rather than managing infrastructure.

Docker has become a popular tool in software development, particularly for building and deploying microservices-based applications. It allows developers to easily manage complex environments and deploy applications to production quickly and reliably. Docker also supports container orchestration tools like Kubernetes, making it a versatile tool for modern application development and deployment.

Installing Docker

Update Package Manager:

sudo apt-get update

Install Docker:

sudo apt-get install docker-ce docker-ce-cli containerd.io

Run Docker:

sudo docker run hello-world

This command will download a test image and run a container from it. If Docker is installed and running correctly, you should see a message that says “Hello from Docker!” followed by some additional output.

Dockerfile

A Dockerfile is a script that defines the steps needed to build a Docker image. For example, let’s say you want to build an image that runs a simple web application. Here’s an example Dockerfile:

# Use an official Python runtime as a parent image
FROM python:3.9-slim-buster

# Set the working directory to /app
WORKDIR /app

# Copy the current directory contents into the container at /app
COPY . /app

# Install any needed packages specified in requirements.txt
RUN pip install --trusted-host pypi.python.org -r requirements.txt

# Make port 80 available to the world outside this container
EXPOSE 80

# Define environment variable
ENV NAME World

# Run app.py when the container launches
CMD ["python", "app.py"]

This Dockerfile starts with the official Python 3.9 slim-buster image, sets the working directory to `/app`, copies the contents of the current directory to the container’s `/app` directory, installs any needed packages specified in `requirements.txt`, exposes port 80, sets an environment variable, and runs `app.py` when the container is launched.

Docker Image

Docker Image is a pre-configured and immutable package that contains all the necessary files, libraries, and dependencies needed to run an application. It serves as a template for creating Docker containers, which are instances of the image that are created at runtime.

Images are built from a set of instructions called a Dockerfile, which describes the environment and dependencies needed by an application. The Dockerfile specifies the base image, any additional software packages or libraries required, and any configuration settings needed to run the application.

Once an image is built, it can be stored in a registry such as Docker Hub, which allows it to be easily shared and reused by other developers. Docker images can also be layered on top of one another, allowing developers to create custom images that include their own code and configurations on top of existing images.

Images are designed to be lightweight and efficient, using a layered file system that shares common files between images and allows for quick and efficient distribution of updates and changes. They are also designed to be portable, allowing them to be easily deployed across different computing environments, such as development, testing, and production environments.

Once you’ve written your Dockerfile, you can build the Docker image using the `docker build` command. Navigate to the directory containing your Dockerfile and run the following command:

docker build -t my-image .

This command will build a Docker image with the tag `my-image` from the current directory (`.`).

Docker Container

Docker Container is a lightweight and standalone executable package that includes everything needed to run a piece of software, including the code, runtime, libraries, system tools, and settings. Containers are created from Docker images, which are a pre-configured and immutable set of files that define the environment and dependencies required by an application.

Containers provide a consistent runtime environment that is isolated from the underlying host system, making it possible to run applications across different platforms and environments without worrying about compatibility issues. They are also highly portable and can be easily moved between different computing environments, such as development, testing, and production environments.

Docker containers are designed to be fast and efficient, using minimal system resources while still providing the necessary isolation and security required for running applications in production environments. They are managed through a container orchestration tool like Docker Compose or Kubernetes, which provides advanced features like load balancing, auto-scaling, and automated deployment.

Once you’ve built your Docker image, you can run a container from it using the `docker run` command. For example, to run a container from the `my-image` image, you can run the following command:

docker run -p 4000:80 my-image

This command will run a container from the my-image image and map port 4000 on your machine to port 80 in the container.

Once your container is running, you can test your application by visiting `http://localhost:4000` in your web browser.

Docker Compose

Docker Compose is a tool for defining and running multi-container Docker applications. It allows developers to define the services that make up an application, including their configuration, dependencies, and networking, in a simple and declarative format using a YAML file.

With Docker Compose, developers can define multiple containers that work together to provide a complete application, such as a web server, a database server, and a message queue. These containers can be managed as a single unit, with their dependencies and networking automatically configured by Docker Compose.

Docker Compose simplifies the process of running and managing multi-container applications, allowing developers to easily spin up and tear down environments for development, testing, and production. It also supports advanced features such as scaling, rolling updates, and health checks, making it a powerful tool for deploying complex applications in production environments.

Overall, Docker Compose is a valuable tool for developers who want to streamline their development process and simplify the deployment of multi-container applications.

With Docker Compose, you can:

  • Define your application’s services: Each service in your application is defined in a Compose file, which specifies the image to use, environment variables, and any other configuration options.
  • Start and stop your application: With a single command, you can start and stop your entire application, including all of its services.
  • Scale your application: You can easily scale your application up or down by changing the number of replicas for each service.
  • Manage your application’s network: Docker Compose automatically creates a network for your application’s services and assigns them unique names.

Here’s an example of a simple Compose file:

version: '3'

services:
web:
image: nginx:latest
ports:
- "80:80"
db:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: example

This Compose file defines two services, `web` and `db`. The `web` service uses the latest Nginx image and maps port 80 on the host to port 80 in the container. The `db` service uses the latest MySQL image and sets the `MYSQL_ROOT_PASSWORD` environment variable to “example”.

To start the application defined in this Compose file, navigate to the directory containing the file and run the following command:

docker-compose up

This command will start the two services defined in the Compose file, `web` and `db`.

Docker Engine

Docker Engine is the core component of the Docker platform that manages the lifecycle of Docker containers. It is an open-source containerization technology that allows developers to build, run, and manage containerized applications.

The Docker Engine consists of a daemon process, a command-line interface (CLI), and an API that allows other applications to interact with the Docker platform. The daemon is responsible for managing Docker objects such as images, containers, networks, and volumes, while the CLI provides a command-line interface for interacting with the daemon.

Docker Engine uses a client-server architecture, where the Docker CLI sends commands to the Docker daemon through a RESTful API. The Docker daemon then performs the requested operations, such as starting or stopping containers, building images, or creating networks.

Docker Engine is available for multiple operating systems, including Linux, Windows, and MacOS, and supports a wide range of programming languages and frameworks. It is a widely used technology in the development and deployment of modern cloud-native applications, as it provides a flexible and efficient way to manage and scale containerized applications.

Installing Docker Engine

Install Required Dependencies:

sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release

Add Docker GPG Key:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Add Docker Repository:

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Update Package Manager:

sudo apt-get update

Note: These instructions are for Ubuntu/Debian-based systems. If you are using a different Linux distribution, the installation steps may be slightly different. You can refer to the Docker documentation for specific installation instructions for your platform.

Also, keep in mind that Docker installation on other platforms (such as Windows or MacOS) may require different steps. You can refer to the official Docker documentation for instructions on how to install Docker on your specific platform.

About the author

Technical Sahil

Sahil Dhamija is a visionary entrepreneur and tech enthusiast, proudly owning multiple companies across India, the US, the UK, and the UAE. As the founder of AInventions Technologies LLC, DigitalMarkethink Solutions LLC, WebReinvent Technologies LLC, BusinessMate Software Solutions LLC, and co-founder of Hostyaga FZE LLC, Sahil is a dynamic leader shaping the future of technology and digital marketing.

Apart from leading his businesses, Sahil is a passionate tech YouTuber, sharing insights and tutorials on various technological topics. He also serves as the CTO at Vayuna Corporate Travels Pvt Ltd and as Product Head at Vayuna Voicetech Pvt Ltd, where he oversees cutting-edge solutions in corporate travel and voice technology. Additionally, Sahil is a creative force in the film industry, producing films through Gentle Breeze Films Pvt Ltd.

Driven by innovation and creativity, Sahil continues to push boundaries in technology, media, and business.

View all posts

1 Comment

Leave a Reply

Your email address will not be published. Required fields are marked *