Why to use custom Network Subnet for Docker Networking?
Docker container makes use of default subnet "172.17.0.0/16" for Networking. There may be many scenarios where we can’t use the default network due to some restrictions or in case subnet already used in the network.
Lab Tasks
In this quick session, we will change the network from default subnet "172.17.0.0/16" to "10.10.10.10/24". The bridge interface is remain to docker0 i.e. default.
Configure the Custom Network
Stop The Docker Service
# systemctl stop docker.service
Bring down the Docker bridge docker0
# ip link set dev docker0 down
Verify if IP forwarding is enabled, if not enable it in sysctl.conf
# sysctl net.ipv4.conf.all.forwarding
Update new subnet in the /etc/sysconfig/docker-network add the following to DOCKER_NETWORK_OPTIONS:
"--bip=YOUR>CIDR>ADDRESS/24"
Example
DOCKER_NETWORK_OPTIONS="--bip=10.10.10.10/24"
Remove default subnet’s MASQUERADE rules from the POSTROUTING chain in network iptables:
# iptables -t nat -F POSTROUTING
# iptables -t nat -F DOCKER
Start Docker service:
# systemctl start docker.service
Verify that the MASQUERADE rule have new subnet added to the POSTROUTING chain:
# iptables -t nat -L -n
Validation
Check the new subnet is on the bridge now:
# docker network inspect bridge
Check IP Address of the Container
# docker inspect -f '{{ .NetworkSettings.IPAddress }}' [Container ID]
Run a docker container and check container have
# docker run -it [Container Name] /bin/bash
