docker networking

Understanding of  Docker Networking using Hands-on Labs

Docker networking constitutes a cluster of two or more devices capable of communication, either through physical or virtual means.

By understanding docker networking, you can gain skills on how to develop, deploy, and manage applications.

In this article, we’ll explain how Docker network functions and navigate Docker networks in real-time settings with our hands-on labs.

What is Docker? 

Docker is a platform designed to simplify the process of developing, deploying, and managing applications by utilizing containerization technology. It includes a networking unit for taking care of communication carried out between the container, docker host, and users. 

To simplify, Docker allows you to package an application and all its dependencies into a single, lightweight unit called a container. These containers can run consistently across various environments, from a developer’s laptop to a production server, ensuring that an application behaves predictably and is easily scalable.

Docker employs a containerization platform to integrate software applications and their dependencies into recycled units named containers. Docker container can run on any host along with Docker or any equivalent container installed on run time.

One key advantage of Docker is its ability to isolate applications and their dependencies, reducing conflicts between software components and improving system efficiency.

Containers are highly portable and can be quickly spun up or down, making it easier to scale resources up or down as needed. Containers are not full-fledged operating systems. They are more of thin operating systems meant for solving specific purposes only. 

What is Docker Networking?

Docker network, a virtual network established by Docker, facilitates interaction among Docker containers. 

When two containers operate on the same host, they can communicate directly, eliminating the necessity to expose ports to the host machine. Docker offers a platform-agnostic approach for managing Docker hosts, accommodating various operating systems such as Windows, Linux, or a combination thereof

Docker networking exhibits distinctions from networking in virtual machines (VMs) or physical machines in several aspects:

Flexibility Differences

Virtual machines offer greater flexibility in certain configurations, such as supporting Network Address Translation (NAT) and host networking. Docker predominantly utilizes a bridge network, and though it can accommodate host networking, this option is primarily available on Linux.

Network Isolation Mechanism

In Docker containers, network isolation is accomplished through a network namespace rather than a completely separate networking stack.

Scale Considerations

Docker allows the concurrent execution of numerous containers on a single-node host. Therefore, the host must be capable of supporting networking at this scale. In contrast, virtual machines typically encounter fewer network limitations since they usually run fewer processes per VM.

These distinctions highlight how Docker networking introduces unique approaches and considerations compared to traditional virtual machine or physical machine networking. Understanding these differences is essential for effectively leveraging Docker’s networking capabilities.

Also Read: Free Questions on Docker Certified Associate Exam

Docker Networking Types

Docker networking drivers help to configure the communications that take place between neighboring containers and external services. To achieve any network connection, containers need to be connected to the Docker network. 

The communication routes information shared to the container depending upon its network connections.

Docker Networking types

Docker has five in-built networking drivers that deploy core networking functionalities such as: 

  1. Bridge: It creates a software-based bridge between the host and container. Containers that are interlinked to the network communicate with each other but they do not connect with outside networks. Each container in the network is allocated its IP address. As the network is bridged to your host, containers can communicate on both your local area network (LAN) and the internet. However, they won’t be visible as physical devices on your LAN.
  2. Host: Containers utilizing the host network mode share the host’s network stack without isolation. They do not receive separate IP addresses, and port bindings are directly exposed to the host’s network interface. Consequently, a container process listening on port 80 will bind to <your_host_ip>:80.
  3. overlay: Overlay networks are expansive networks that extend across multiple Docker hosts. This network enables seamless communication between all containers running on any of the hosts, eliminating the need for operating system-level routing support.
  4. IPvlan: Users have full control over both IPv4 and IPv6 addressing through the utilization of the IPvlan driver.
  5. Macvlan: The macvlan driver enables the assignment of MAC addresses to a container, providing users with this capability.

Basic Docker Networking Commands

Let’s discuss some of the important networking commands that are widely used by developer teams.

Check Docker Networks:

Use docker network ls to see a list of all networks in Docker.

Link a Container to a Network

When a docker network connects a multi-host-network container, you can attach a running container to a network. You can also start a container and instantly connect it to various networks using Docker’s network feature.

Assign a Specific IP to a Container

By running docker network connect –IP 10.10.36.122 multi-host-network container, you can set a custom IP, like 10.10.36.122, to a container.

Set Shortcuts for a Container

Use docker network connect –alias db –alias mysql multi-host-network container2 to create easy-to-remember names (aliases) for a container, making it simpler to access.

Disconnect a Container

Use docker network disconnect multi-host-network container1 to stop a container from being connected to a network.

Delete a Specific Network:

Execute docker network rm network_name to get rid of a specific network from Docker.

Delete Several Networks Together

If needed, you can remove multiple networks in one go by using a command like docker network rm 3695c422697f network_name.

Clean Up Unused Networks

To clear out any networks not currently in use, just run docker network prune.

How does Docker Networking work?

To gain a more comprehensive understanding, let’s explore how Docker Networking operates. 

Docker Networking Workflow

Docker File builds the Docker Image

The Docker File is responsible for constructing the Docker Image using the build command.

Docker Image

This serves as a template with instructions and encompasses all the project’s code.

Docker Container

An executable package that combines the application and its dependencies.

Docker Hub

Docker has its cloud-based registry, Docker Hub, where users store and distribute container images. Once the Docker Image is built, it can be uploaded to a registry or Docker Hub.

By following this workflow, Docker enables the seamless creation, distribution, and execution of containerized applications. The Docker File, Image, and Container play distinct roles in this process, contributing to the efficiency and flexibility of Docker Networking.  

Docker Networking using Hands-on Labs

In this laboratory session, you will delve into fundamental Docker networking concepts. The hands-on experience involves exploring examples that illustrate a range of basic networking principles. Through practical exercises, you will gain a deeper understanding of key Docker networking concepts.

To use the docker network, you need to access the Whizlabs hands-on labs page.

Note: To access the lab’s page, you need a premium subscription.

On the lab’s page, using the search bar, type docker network and select the labs related to docker networking. Go through the lab details before setting up the lab environment.  It is a guided lab, so you have all the steps included in the lab details to build a docker network in the lab setup.

Start the Lab Environment

Click the “Start Lab” button placed in the right sidebar of the labs page. Now the lab environment has been set up successfully.

lab page

 Follow the lab steps to create the docker network in virtual settings: 

lab steps

Step 1: Sign in to the AWS Management Console

  1. Click on the Open Console button, and you will get redirected to AWS Console in a new browser tab.
  2. On the AWS sign-in page,
    • Leave the Account ID as default. Never edit/remove the 12 digit Account ID present in the AWS Console. otherwise, you cannot proceed with the lab.
    • Now copy your User Name and Password in the Lab Console to the IAM Username and Password in AWS Console and click on the Sign in button.
  3. Once Signed In to the AWS Management Console, Make the default AWS Region as US East (N. Virginia) us-east-1.

Step 2 : SSH into EC2 Instance

Select your EC2 instance(whizlabs-docker) and click on the Connect button.

ssh

Select the EC2 Instance Connect option and key in the Connect button. (Keep everything as default)

A new tab will open in the browser where you can run the Linux Commands.

linux

Step 3: Create a Docker Network 

Create a user-defined bridge network with the help of this command :

docker net

Step 4: Run Containers on “mynetwork” 

Run a container named container1 and connect it to mynetwork by key-in the below command:

docker

Run another container and name it as container2 and connect it to the same network :

container

Step 5: Inspect the Bridge Network 

Check the network settings for the mynetwork :

bridge

Copy the IP address of the containers and save it somewhere :

sudo

Step 6: Test Communication in the containers 

Let’s go inside of one container and ping the other one: 

exec

Now we are in Container1 let’s try to ping :

ping c1

Replace the <IP_of_container2> with the actual IP address that we saved in the previous task.

You can also ping the container via the name of the container.

End lab

After following the steps, click on “End Lab” on your Whizlabs lab console and wait for the process to finish.

endlab

FAQs

How does Docker networking work?

Docker networking is built upon the principle of granting containers and their distinct network namespaces. This feature, rooted in the Linux kernel, ensures that each container operates within its secluded virtual network space.

Furthermore, as containers initiate, they establish virtual network interfaces on the host system. These interfaces empower containers to engage with networks beyond their designated namespaces, leveraging the host’s network capabilities for communication.

List down the docker network commands.

Here are some commands used in docker networking:

  • docker network create
  • docker network connect
  • docker network ls
  • docker network rm
  • docker network disconnect
  • docker network inspect

What is a container in  Docker networking?

A container network operates on a virtualization principle, akin to virtual machines (VMs), but with notable distinctions. Unlike VMs, which employ hardware virtualization, containerization is rooted in operating system virtualization.

Is docker network prune safe?

Using the docker prune command is typically considered safe as it deletes unused containers, images, networks, and volumes. However, it’s important to note that this command will only eliminate resources that are not actively in use by any running container.

What are the ways you can network containers in Docker?

In Docker, there are two primary methods to network containers:

  • Bridge Driver: This is a default network driver provided by Docker.
  • Overlay Driver: Another default network driver in Docker, designed for more advanced networking scenarios.

Conclusion

Hope this write-up covers everything about Docker and Docker Networking, some of its benefits, how Docker networking works, the Container network model, network drivers, and some basic Docker networking commands. 

Utilizing the docker capabilities can enhance the communication that takes place between the networks.

If you’d like to get a good understanding of the Docker tool, Whizlabs can solve your problem by offering hands-on labs to get in-depth knowledge about Docker. 

About Karthikeyani Velusamy

Karthikeyani is an accomplished Technical Content Writer with 3 years of experience in the field where she holds Bachelor's degree in Electronics and Communication Engineering. She is well-versed in core skills such as creative writing, web publications, portfolio creation for articles. Committed to delivering quality work that meets deadlines, she is dedicated to achieving exemplary standards in all her writing projects. With her creative skills and technical understanding, she is able to create engaging and informative content that resonates with her audience.

Leave a Comment

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

Scroll to Top