DevSecOps for BBK
  • Introduction
  • Getting Started
    • Virtual Training Practices
    • Training Plan
    • Tools and Configuration
    • Troubleshooting
  • Docker Fundamentals
    • Docker Setup
    • Docker First Container
    • Docker Network Basics
    • Docker Network Exercise
    • Docker Volume Basics
    • Docker Storage
  • Dockerfile Fundamentals
    • Dockerfile Instructions
    • Dockerfile Environment Variables
    • Dockerfile Build Arguments
    • Non-privileged Containers
    • Dockerfile Order of Execution
    • Dockerfile Volume
    • Entrypoint Command
    • Multiple Stage Build
  • Container Management
    • Containers Start Automatically
  • Docker Security
    • Seccomp Profile
  • Docker Compose
    • Docker Compose Install
    • Docker Compose Commands
    • Docker Compose File
    • Docker Compose Volumes and Network
  • K8s Cluster Setup
    • Minikube Installation
    • Calico Networking
    • K8s Walkthrough
    • K8s Cheat Sheet
  • Understand K8s
    • Pod Connectivity
    • Deployments
    • Service Cluster IP
    • Service NodePort
    • ClusterIP Exercise
    • NodePort Exercise
    • Service LoadBalancer
    • Configmap
    • Secrets
  • Application Lifecycle Management
    • Rolling Updates and Rollback
    • Multi Container Pod
  • K8s Storage
    • Persistent Volume
    • Persistent Volume Claim
    • PVC in POD
  • Istio
    • AKS Setup
    • Kubectl Setup in Windows
    • Istio Setup Manual
    • Istio Demo App
    • Istio Observability
  • Terraform
    • Terraform Setup
    • Terraform Demo
    • Azure Terraform Setup
  • Terraform AWS
    • Terraform AWS Setup
    • Terraform AWS Demo S3
  • Refrences
    • Docker Static Site
    • Docker First Image
Powered by GitBook
On this page
  • 1. Creating a network and defining a Subnet and Gateway
  • 2. Create a network with an IP range:
  • 2.1 Install Net Tools inside the Centos Container
  • 3. Create a new container and assign an IP to it:
  • 4. Networking two containers
  1. Docker Fundamentals

Docker Network Exercise

In this lesson, we will dig deeper into container networking by supplying our own subnet and gateway when creating a new network. We will then move on to networking two different containers using an internal network. This will allow one container to be publicly accessible while the other one is not.

1. Creating a network and defining a Subnet and Gateway

Step 1: Create a bridge network with a subnet and gateway:

docker network create --subnet 10.1.0.0/24 --gateway 10.1.0.1 br02

Step 2: Run ifconfig to view the bridge interface for br02:

ifconfig

Step 3: Inspect the br02 network:

docker network inspect br02

Step 4: Prune all unused networks:

docker network prune

2. Create a network with an IP range:

docker network create --subnet 10.1.0.0/16 --gateway 10.1.0.1 \
--ip-range=10.1.4.0/24 --driver=bridge --label=host4network br04

Step 1: Inspect the br04 network:

docker network inspect br04

Step 2: Create a container using the br04 network:

docker container run --name network-test01 -it --network br04 centos /bin/bash

You may not find any troubleshooting tools like ping, netstat, or any other tools inside the centos container. You will also not find yum.

try to google them and fix the issues. mainly if you cant access yum, please refer to google on how to add repo packages list to yum repo and then follow the below commands.

2.1 Install Net Tools inside the Centos Container

yum update -y
yum install -y net-tools

Step 2.1.2: Get the IP info for the container:

ifconfig

Step 2.1.3 Get the gateway info the container:

netstat -rn

Step 2.1.4 Get the DNS info for the container:

cat /etc/resolv.conf

3. Create a new container and assign an IP to it:

docker container run -d --name network-test02 --ip 10.1.4.102 --network br04 nginx

Get the IP info for the container:

docker container inspect network-test02 | grep IPAddr

4. Networking two containers

Step 1: Create an internal network:

docker network create -d bridge --internal localhost

Step 2: Create a MySQL container that is connected to localhost:

docker container run -d --name test_mysql \
-e MYSQL_ROOT_PASSWORD=P4sSw0rd0 \
--network localhost mysql:5.7

Step 3: Create a container that can ping the MySQL container:

docker container run -it --name ping-mysql \
--network bridge \
centos

Step 4: Connect ping-mysql to the localhost network:

docker network connect localhost ping-mysql

Step 5: Restart and attach to container:

docker container start -ia ping-mysql

Step 6: Create a container that can't ping the MySQL container:

docker container run -it --name cant-ping-mysql \
centos

Step 7: Create a Nginx container that is not publicly accessible:

docker container run -d --name private-nginx -p 8081:80 --network localhost nginx

Step 8: Inspect private-nginx:

docker container inspect private-nginx
PreviousDocker Network BasicsNextDocker Volume Basics

Last updated 2 years ago